データセット内のテーブル間の関係を設定するのに苦労しています。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 の列があり、3 番目のテーブルにはテーブルには 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 が指すテーブルの親ではありません。
ありがとうございました