什么是为具有多对多父子关系的表数据绑定ASP.NET TreeView的最佳方法

时间:2010-06-18 13:15:14

标签: c# asp.net xml treeview dataset

我有一个表,它有通常的ParentID,ChildID,因为它是自引用树数据结构中的前两列。

我的问题是当我把它拉出来并使用以下代码时:

DataSet set = DA.GetNewCategories();
        set.Relations.Add(
            new DataRelation("parentChildCategories", set.Tables[0].Columns["CategoryParentID"], set.Tables[0].Columns["CategoryID"])
            );
        StringBuilder buildXml = new StringBuilder();
        StringWriter writer = new StringWriter(buildXml);
        set.WriteXml(writer);
        TreeView2.DataSource = new HierarchicalDataSet(set, "CategoryID", "CategoryParentID");
        TreeView2.DataBind();

我收到错误:

These columns don't currently have unique values

我相信这是因为我的数据有多个父节点的子节点。这对我的应用程序来说很好 - 我不介意在TreeView的多个节点中呈现一行数据。

有人可以解释一下吗?拥有一个DataSet渲染XML并且节点出现在多个地方似乎并不合理,但我无法弄清楚如何去做。

谢谢,

1 个答案:

答案 0 :(得分:0)

您的表中可能有第三列,其中包含(parentID +“_”+ categoryId),而不是在HierarchicalDataSet中使用该列。这在您的树中是独一无二的

对于父ID,您也需要相同,以便它们匹配类别ID