2009-07-16 13 views
2

私のアプリケーションでは、フィルタオプションが動的に渡されるフィルタを適用するためにdataviewを使用しています.2つのフィルタパラメータがある場合、dataviewはparameter1、次にパラメータ2 。私はリストボックスを使って選択された合計no.ofパラメータにカウントを設定しているforループで呼び出されたメソッドを使用していますが、フィルタリングは最後のパラメータに対してのみ行われます。複数の列を持つDataViewのフィルタリング

string str = ""; 
for (int i = 0; i < listbox.Items.Count; i++) 
{ 
    if (listbox.Items[i].Selected) 
    { 
     if (str != string.Empty) 
     { 
      str = str + "," + listbox.Items[i].Text; 

     } 
     else 
     { 
      str = str + listbox.Items[i].Text; 
     } 
    } 
} 

string[] items = str.Split(','); 
for (int i = 0; i < items.Length; i++) 
{ 
    ApplyFilter(items[i],dv); 
} 

private DataView ApplyFilter(string str,DataView newdv) 
{ 
    newdv.RowFilter = "[" + str + "]=" + ddl.SelectedItem.ToString(); 

    return newdv; 
} 

は、適切なソリューションを提供してください: はここに私のコードです。あなたは完全にあなたのフィルタを適用する必要があります

答えて

7

事前に

おかげで...、一つではない1:私が思う

string[] items = str.Split(','); 
string filter = string.Empty; 
for (int i = 0; i < items.Length; i++) 
{ 
    filter += items[i] + " = " + dropdown.SelectedValue; 
    if (i != items.Length - 1) 
    { 
     filter += " AND "; 
    } 
} 
newdv.RowFilter = filter; 
+0

が、フィルタパラメータは、応答のために同じのRowFilterで –

+0

おかげで列を追加するpassed.howになりますどのように多くのIAMわかりません。それは正常に動作しています。 –

0

:として

newdv.RowFilter = "Column1 = " + value1 + " AND Column2 = " + value2; 

だからあなたのコードを変更することができます完全なフィルタ文字列を作成し、このフィルタをDataViewに設定する必要があります。たとえば :


StringBuilder sb = new StringBuilder() 
for (int i = 0; i < listbox.Items.Count; i++) { 
    if (!listbox.Items[i].Selected) { 
    continue; 
    } 

    if (sb.Length > 0) { 
    sb.Append(" and "); 
    } 
    sb.AppendFormat("[{0}] = {1}", listbox.Items[i].Text, ddl.SelectedItem); 
} 

dv.RowFilter = sb.ToString(); 
0
DataView dv = new DataView(dt); 
string filterText = "some search criteria"; 
dv.RowFilter = "Column1 + Column2 + Column3 Like '%" + filterText + "%'"; 
+1

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! – kayess

関連する問題