多对多父子转发器,数据关系c#

时间:2013-06-02 05:05:02

标签: c# repeater parent-child

我正在尝试设置一个嵌套转发器的方案,其中我有多个不同的类别,并在其下显示多个子项。麻烦就是这样,父表和子表匹配类别id,它返回所有表类别的所需结果,但是这个。出于某种原因在这种情况下,我只从表A中获取textCategory1作为标题文本,页面上该类别中的表b中的所有子项,我检查了sp并且所有三个都被传递。

父表A
标题文字:TextCategory1 |分类:13

标题文字:TextCategory2 |分类:73

标题文字:TextCategory3 |分类:14

儿童表B
标题文本:childText |分类:13 |父类别:空

标题文字:childText |分类:74 |父类别:2

标题文字:childText |分类:14 |父类别:2

这是我使用的数据关系,我将主转发器数据绑定到第一个表的结果,而子转发器在主项目数据绑定中绑定到数据关系的datarow.createchildview。

ds.Relations.Add(new DataRelation("Category_ID", ds.Tables[0].Columns["Category_ID"],
ds.Tables[1].Columns["Category_ID"]));

MasterRep.DataSource = ds.Tables[0];
MasterRep.DataBind();

MasterRep Item DataBound中的部分:

 DataRowView drv = e.Item.DataItem as DataRowView;
 Repeater ChildRep = e.Item.FindControl("ChildRep") as Repeater;

 if (drv != null && ChildRep != null)
 {

    ChildRep.DataSource = drv.CreateChildView("Category_ID");
    ChildRep.DataBind();
 }

在这种情况下,有人可以建议我不能从表a中获取所有三个策略文本行吗?

2 个答案:

答案 0 :(得分:0)

有些事情很突出,没有意义,很可能会导致你的问题。

(我假设子行的父类别是将子行连接到父行(使用父行的类别ID)。)

  1. 表B(类别13)中的第一项具有父类别null。这意味着它没有父母。类别ID也与表A中第一项的类别ID相同。
  2. 第2项和第2项表B中的3表示父类别为2.表A中没有具有此ID的项目,实际上意味着这两个子项目没有父项。
  3. 表B中的项目3具有与表A中的项目3相同的ID。
  4. 另外,您是否可以编辑答案以包含MasterRep OnItemDatabound()方法的完整代码?问题也可能在那里。

答案 1 :(得分:0)

事实证明,代码运行正常但数据不正确,一旦我正确地纠正了我的代码功能。在表A中,每个类别都表示为具有父类别的类别,然后根据类别与表b进行匹配。这实际上在我的代码中使用数据关系和项目数据绑定子视图正常运行。我基于这个非常有用的链接mikesdotnetting.com/Article/57 / ...基于我的方法,但是它适用于许多有很多孩子的父母。