多列上的数据集关系

发布于 2024-12-05 22:27:55 字数 1417 浏览 4 评论 0原文

我很难在数据集中的表之间设置关系。我有 2 个中继器(嵌套)。 RepeaterReplies 是外部中继器。这是我绑定它并设置关系的地方。

这是我

            List<DataColumn> parents = new List<DataColumn>{};
            parents.Add(ds.Tables[0].Columns["REPLY_ID"]);
            parents.Add(ds.Tables[0].Columns["USER_ID"]);
            List<DataColumn> childs = new List<DataColumn>{};
            childs.Add(ds.Tables[2].Columns["REPLY_ID"]);
            childs.Add(ds.Tables[2].Columns["MAKER_USER_ID"]);
            DataColumn[] parentz = parents.ToArray();
            DataColumn[] children = childs.ToArray();
            ds.Relations.Add("parents", parentz, children,false);
            repeaterReplies.DataSource = ds;
            repeaterReplies.DataBind();

检查包含 3 个表的数据集时所得到的内容(我只需要设置第一个表和最后一个表之间的关系 - tbl[0] 和 tbl[2]),并且我确信第一个表具有 REPLY_ID 列和 USER_ID,第三个表有 REPLY_ID 和 MAKER_USER_ID。

绑定内部中继器时出现错误(外部中继器的 ItemDataBound)

                DataRowView dv = e.Item.DataItem as DataRowView;
                Repeater nestedRepeater = e.Item.FindControl("repeaterComments") as Repeater;
                if (nestedRepeater != null)
                {
                    nestedRepeater.DataSource = dv.CreateChildView("replies");
                    nestedRepeater.DataBind();
                }

错误是

该关系不是此 DataView 所属表的父级 点。

谢谢

I'm having a hard time setting relation between my tables in my dataset. I got 2 repeaters (nested). RepeaterReplies is the outer repeater. Here is where I bind it and set the relation.

Here is what I have

            List<DataColumn> parents = new List<DataColumn>{};
            parents.Add(ds.Tables[0].Columns["REPLY_ID"]);
            parents.Add(ds.Tables[0].Columns["USER_ID"]);
            List<DataColumn> childs = new List<DataColumn>{};
            childs.Add(ds.Tables[2].Columns["REPLY_ID"]);
            childs.Add(ds.Tables[2].Columns["MAKER_USER_ID"]);
            DataColumn[] parentz = parents.ToArray();
            DataColumn[] children = childs.ToArray();
            ds.Relations.Add("parents", parentz, children,false);
            repeaterReplies.DataSource = ds;
            repeaterReplies.DataBind();

When I check my dataset which contains 3 tables (I just need to set a relation between first and last table - tbl[0] and tbl[2]) and I'm sure that first table has the columns REPLY_ID and USER_ID and the 3rd table has REPLY_ID and MAKER_USER_ID.

I'm getting the error when binding the inner repeater (ItemDataBound of outer repeater)

                DataRowView dv = e.Item.DataItem as DataRowView;
                Repeater nestedRepeater = e.Item.FindControl("repeaterComments") as Repeater;
                if (nestedRepeater != null)
                {
                    nestedRepeater.DataSource = dv.CreateChildView("replies");
                    nestedRepeater.DataBind();
                }

Error is

The relation is not parented to the table to which this DataView
points.

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

辞慾 2024-12-12 22:27:55

从未尝试过 CreateChildView 方法,但是您不应该使用在 数据关系

nestedRepeater.DataSource = dv.CreateChildView("parents");

Never tried the CreateChildView method, but shouldn't you use the name you've defined in the DataRelation?

nestedRepeater.DataSource = dv.CreateChildView("parents");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文