多列上的数据集关系



我很难在数据集中设置我的表之间的关系。我有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所对应的表的父级点。

谢谢

从未尝试过CreateChildView方法,但你不应该使用你在数据关系中定义的名称吗?

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

最新更新