2016-10-14 7 views
0

データをグループ化するネストされたリピータがあります。同じテーブル内のすべてのデータはすべてQUESTION_GROUP列を持ちます。親リピーターの親リピーターから親リピーターのグループ名を親のItem Data Boundに渡しています。しかし、私は子リピータのデータソースとして設定することはできません。リピータDataSourceのデータテーブルから複数のデータをフィルタリングするにはどうすればよいですか?Repeater DataSource(asp。net)としてのデータテーブルのフィルタリング

protected void ParentRepeaterDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     Repeater rp = (Repeater)e.Item.FindControl("ChildRepeater");    
     rp.DataSource = FixedQuestions.Select("QUESTION_GROUP='" + DataBinder.Eval(e.Item.DataItem, "Q_Group").ToString() + "'"); 
     rp.DataBind(); 
    } 

Q_Groupは親リピータから送信されます。 QUESTION_GROUPは固定納得の列(DataTable)です。

私は質問していますが、どのように(リピータデータソースの)列でフィルタリングされたデータテーブルの一部を取得できますか?

+0

データソースを設定できないということを意味しますか?何が起こっているのか、例外を教えてください。空のリピータですか? FixedQuestionとは何ですか?あなたに役立つ情報が不十分です:http://stackoverflow.com/help/mcve – Esko

+0

@Esko申し訳ありません。 FixedQuestionは、その中のすべてのデータを含むデータテーブルです。私は "DataTable.Select(ここでquestion_group =親リピータのデータアイテム)"のようなデータを取得したい。私は今エラーがあります(オブジェクトリファレンスはオブジェクトのインスタンスを設定しません)。私のソースがリピータのデータソースであるために正しいタイプではないように見えます。 –

+0

この追加情報をすべてあなたの質問に編集してください。どのラインが例外をスローしますか? RPはヌルですか? FixedQuestionsはnullですか?それでもあなたを助けるための十分な情報がない場合、私たちはそのコードで何が間違っているか知る方法がありません。 – Esko

答えて

0

Linqを使用してネストされたリピータにバインドする前にテーブルをフィルタリングできます。

rp.DataSource = FixedQuestions.AsEnumerable().Where(x => x.Field<string>("columnName") == "myValue").CopyToDataTable(); 

上記のスニペットは、フィルタリング後に行が残っている限り機能します。そうしないと、「ソースにはDataRowがありません」というエラーが表示されます。 以下のスニペットは、CopyToDataTable()を呼び出す前に行があるかどうかを確認します。

 DataTable dtFiltered = new DataTable(); 
     var dtFilteredTemp = FixedQuestions.AsEnumerable().Where(X => X.Field<string>("columnName") == "myValue"); 
     if (dtFilteredTemp.AsDataView().Count > 0) 
     { 
      dtFiltered = dtFilteredTemp.CopyToDataTable(); 
     } 
     rp.DataSource = dtFiltered; 
+0

私はあなたの最初のスナップを試して、私は "ソースにはDataRowsが含まれていません"というエラーがあります。だから私は2番目のtryed、エラーはなかったが、正しく動作しません。 S Roはコードをデバッグし、dtFilteredには0行が表示されます。理解できません。 :/ –

+0

次にフィルタリングしたものが0の結果を返しました。行を返すためにquaranteesする値をフィルタリングしてみてください。 – VDWWD

+0

私はすでにそれをチェックしていました:(私のFixedQuestionテーブルが空になるかもしれないと思います。セッションで取得しています(そして、 - >(DataTable)Session ["FixedQuest"])AsEnumerable()。 .....)私は私のセッションをチェックしたり、パネルやその他のものを更新しなければならないと思う。あなたのコードは正当で賢明に見えるからです。ありがとうございました:) –

関連する問題