Отношение DataSet по нескольким столбцам

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

Спасибо


person Pabuc    schedule 19.09.2011    source источник


Ответы (1)


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

nestedRepeater.DataSource = dv.CreateChildView("parents");
person Tim Schmelter    schedule 19.09.2011