Отношение DataSet для нескольких столбцов - PullRequest
0 голосов
/ 19 сентября 2011

Мне трудно установить связь между моими таблицами в наборе данных. Я получил 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 Ответ

1 голос
/ 19 сентября 2011

Никогда не пробовал метод CreateChildView , но не следует ли использовать имя, которое вы определили в DataRelation ?

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