مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

pdp

عضویت از 1394/08/07

استفاده از TreeView با n فرزند

  • شنبه 3 بهمن 1394
  • 19:45
تشکر میکنم

با سلام

من از تابع زیر برای استفاده از TreeView تا سقف 1 فرزند استفاده می کنم که یک تابع بازگشتی است :

        private void PopulateTreeView(DataTable dataTable, int parentId, RadTreeNode treeNode)
        {
            foreach (DataRow row in dataTable.Rows)
            {
                var child = new RadTreeNode
                {
                    Text = row["Title"].ToString(),
                    Value = row["Id"].ToString()
                };
                if (parentId == 0)
                {
                    radTreeView1.Nodes.Add(child);
                    var dtChild = DbTools.RunProcedure("List_Child", DbTools.ProcType.ReturnedValue,
                        new SqlParameter("TableName", "Publication_ProfessionalBackground"),
                        new SqlParameter("Parent_Id", child.Value));
                    PopulateTreeView(dtChild, int.Parse(child.Value.ToString()), child);
                }
                else
                {
                    treeNode.Nodes.Add(child);
                }
            }
        }

سوال اینجاست که آیا تابع مشابهی برای کار با n فرزند وجود دارد ؟

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 4 بهمن 1394
  • 09:06

مثال زیر رو ببینید

البته این برای وب هست ولی ساختار فرقی نداره

private string GenerateUL(DataRow[] menu, DataTable table, StringBuilder sb)
        {
            sb.AppendLine("<ul>");
            if (menu.Length > 0)
            {
                foreach (DataRow dr in menu)
                {
                    string handler = dr["Url"].ToString();
                    string menuText = dr["MenuName"].ToString();
                    string line = String.Format(@"<li><a href=""{0}"">{1}</a>", handler, menuText);
                    sb.Append(line);
                    string pid = dr["PID"].ToString();
                    DataRow[] subMenu = table.Select(String.Format("ParentId = {0}", pid));
                    if (subMenu.Length > 0)
                    {
                        var subMenuBuilder = new StringBuilder();
                        sb.Append(GenerateUL(subMenu, table, subMenuBuilder));
                    }
                    sb.Append("</li>");
                }
            }
            sb.Append("</ul>");
            return sb.ToString();
    

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)