0

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

ありがとうございました

4

1 に答える 1

1

CreateChildViewメソッドを試したことはありませんが、 DataRelationで定義した名前を使用すべきではありませんか?

nestedRepeater.DataSource = dv.CreateChildView("parents");
于 2011-09-19T19:48:38.730 に答える