多列上的DataSet关系

时间:2011-09-19 19:21:01

标签: asp.net dataset relation multiple-columns

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

谢谢

1 个答案:

答案 0 :(得分:1)

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

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