-2

我是 Telerik 工具的新手,目前我的任务是绑定 3 级分层树 PARENT、CHILD、SUBCHILD。我用谷歌搜索了很多,还访问了 Telerik 演示站点,但该代码在我的情况下不起作用。

请提供绑定 Radtree 的代码。我的表结构是:

**ID**    **ParentID**  **Descriptoin**

1           1   Live animals

2           1   Live horses, asses, mules and hinnies

3           2   Live pure-bred breeding animals

4           2   Other live hoses, asses, mules and hinnies
4

1 回答 1

1
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GenerateTreeView();
            }
        }

下面的方法将从您的表中进行选择 - 在 ID(我假设是树视图“MAIN PARENT”节点)和“Parent_ID”(我假设是子节点)之间创建关系。然后它将创建父节点,随后为每个子节点使用该方法填充父节点RecursivelyPopulate

        private void GenerateTreeView()
        {
            SqlConnection con = new SqlConnection("CONN STR");
            con.Open();
            SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM MY TABLE", con);
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            ds.Relations.Add("NodeRelation", 
                             ds.Tables[0].Columns["ID"],
                             ds.Tables[0].Columns["ParentID"]);
            foreach (DataRow dbRow in ds.Tables[0].Rows)
            {
                if (dbRow.IsNull("PARENTID"))
                {
                    RadTreeNode node = CreateNode(dbRow["Description"].ToString(), true);
                    RadTreeView1.Nodes.Add(node);
                    RecursivelyPopulate(dbRow, node);
                }
            }
        }

下面的方法 ( RecursivelyPopulate) 将为关系中的每个子节点创建一个子节点,为在上面的方法中创建的父节点 ( GenerateTreeView)

        private void RecursivelyPopulate(DataRow dbRow, RadTreeNode node)
        {
               foreach (DataRow childRow in dbRow.GetChildRows("NodeRelation"))
               {
                   RadTreeNode childNode = CreateNode(childRow["Description"].ToString();
                   node.Nodes.Add(childNode);
                   RecursivelyPopulate(childRow, childNode);
               }
        }

** 根据您的表结构,您可以使用上面的代码片段拥有无限数量的父子关系

于 2014-06-13T10:17:27.473 回答