【问题标题】:Many-to-Many parent child repeater, data relation c#多对多父子转发器,数据关系c#
【发布时间】:2013-06-02 05:05:01
【问题描述】:

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

父表 A
标题文字:TextCategory1|类别: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 中获取所有三个策略文本行的原因?

【问题讨论】:

    标签: c# repeater parent-child


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 为迟到的回复道歉,但事实证明这是一个数据问题。作为对您在表 A 中的回复的响应,每个类别都表示为具有父类别的类别,然后根据类别与表 b 进行匹配。这实际上在我的代码中使用数据关系和项目数据绑定子视图正确运行。我的方法基于这个非常有用的链接mikesdotnetting.com/Article/57/…,但它适用于许多有很多孩子的父母。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2021-10-02
      • 2016-05-08
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多