【问题标题】:What is the Best way to databind an ASP.NET TreeView for table with many to many parent child relationships为具有多对多父子关系的表绑定 ASP.NET TreeView 的最佳方法是什么
【发布时间】:2011-03-05 10:26:00
【问题描述】:

我有一个表,它具有通常的 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 似乎不是不合理的,但我不知道该怎么做。

谢谢,

马特。

【问题讨论】:

  • 您能否更好地了解您的数据模型是什么样的? CategoryID 不是这个表的主键吗?
  • CategoryID 是主键,但表存在问题。我想知道是否应该删除整个问题,因为我认为它不能提供实用的答案。

标签: c# asp.net xml treeview dataset


【解决方案1】:

您可以在表中包含 ( parentID +"_"+ categoryId ) 的第三列,然后在 HierarchicalDataSet 中使用该列。这在整个树中都是独一无二的

您还需要对父 ID 进行相同操作,以便它们匹配类别 ID

【讨论】:

  • 将此标记为答案,因为我以前使用过此解决方案,但是在这种情况下,数据太脏而无法工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 2012-02-28
  • 1970-01-01
  • 2021-12-21
  • 2018-01-04
  • 2021-02-16
  • 2018-09-22
相关资源
最近更新 更多