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 指向的表的父级。

谢谢

4

1 回答 1

1

从未尝试过CreateChildView方法,但您不应该使用您在DataRelation中定义的名称吗?

nestedRepeater.DataSource = dv.CreateChildView("parents");
于 2011-09-19T19:48:38.730 回答