我正在尝试设置一个带有嵌套中继器的场景,其中我有多个不同的类别,并在它们下面显示多个子项。问题在于,父表和子表在类别 id 上匹配,它返回所有表类别所需的结果,但这个类别除外。出于某种原因,在这种情况下,我只从表 A 中取回 textCategory1 作为页面上该类别中表 b 中所有子项的标题文本,我检查了 sp 并且所有三个都被传递。
父表A
标题文本:TextCategory1|类别:13
标题文本:TextCategory2|类别:73
标题文本:TextCategory3|类别:14
子表 B
标题文本:childText|类别:13 |父类别:Null
标题文本:childText|类别:74|父类别:2
标题文本:childText|类别:14|父类别:2
这是我使用的数据关系,我将主转发器数据绑定(bind)到第一个表的结果,而子转发器在主项数据绑定(bind)中绑定(bind)到数据关系的 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 中获取所有三个策略文本行的原因?
最佳答案
一些突出的事情没有意义,很可能会导致您的问题。
(我假设子行的父类别将子行连接到父行(使用父行的类别 ID)。)
- 表 B 中的第一项(类别 13)的父类别为 null。这意味着它没有 parent 。此外,类别 ID 与表 A 中第一项的类别 ID 相同。
- 表 B 中的项目 2 和 3 的父类别均为 2。表 A 中没有任何项目具有此 ID,这实际上意味着这两个子项目没有父类别。
- 表 B 中的项目 3 与表 A 中的项目 3 具有相同的 ID。
此外,您能否编辑您的答案以包含 MasterRep OnItemDatabound()
方法的完整代码?问题也可能在那里。
关于c# - 多对多父子转发器,数据关系c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16879951/