2

我正在尝试使用嵌套中继器设置一个场景,其中我有多个不同的类别,其中显示了多个子项。问题在于,父表和子表在类别 id 上匹配,这会返回除此之外的所有表类别的所需结果。出于某种原因,在这种情况下,我只从表 A 中获取 textCategory1 作为标题文本,其中包含页面上该类别中表 b 中的所有子项,我检查了 sp 并且所有三个都通过了。

父表 A
标题文本:TextCategory1|Category:13

标题文本:TextCategory2|类别:73

标题文本:TextCategory3|类别:14

子表 B
标题文本:childText|类别:13 |父类别:Null

标题文本: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 项目数据绑定中的部分:

 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 中获取所有三个策略文本行的原因?

4

2 回答 2

0

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

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

  1. 表 B(类别 13)中的第一项的父类别为空。这意味着它没有父级。此外,类别 ID 与表 A 中第一项的类别 ID 相同。
  2. 表 B 中的项目 2 和 3 的父类别均为 2。表 A 中没有具有此 ID 的项目,实际上意味着这两个子项目没有父类别。
  3. 表 B 中的项目 3 与表 A 中的项目 3 具有相同的 ID。

另外,您可以编辑答案以包含 MasterRepOnItemDatabound()方法的完整代码吗?问题可能也在那里。

于 2013-06-03T16:05:00.163 回答
0

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

于 2013-06-11T18:56:47.753 回答