2012-04-04 5 views
8

データをフィルタリングするためにdataviewを使用するので、listviewでtextchangeイベントのデータをフィルタリングしたいと思います。以下のコードの問題は、それぞれのデータビューを内部で使用するため、最後の値が1つのみの条件だけをチェックするため、s1のデータビューと残りの値はlistviewとバインドする必要があります。データビューでデータをフィルタリングする方法

たとえば、と入力した場合、テキストボックスにと入力すると、anandha kumar、anna ectのような値で始まるすべての項目値がリストされます。私が配列an1ha kumarとannaを配列s1に保つと仮定します。私は他のすべての値を配列の値がantony ect ... listviewのように期待する必要があります。

protected void TextBox1_TextChanged(object sender, EventArgs e) 
     { 
      dvProducts = (DataView)Session["ListViewItems"]; 

      string serachText = EscapeLikeValue(TextBox1.Text); 

      string lvValues = hdRetailCustomerGroup.Value; 

      string trim = lvValues.Replace(" ", ""); 

      trim = trim.Replace("\r", ""); 

      trim = trim.Replace("\n", ""); 

      trim = trim.Replace("\t", ""); 
      string str = trim; 

      string[] list = str.Split('|'); 


      foreach (string s1 in list) 
      { 
       if (s1 != string.Empty) 
       { 
        dvProducts.RowFilter = "(CODE like '" + serachText + "*') AND (CODE <> '" + s1 + "')"; 
        Session["ListViewItems"] = dvProducts; 
       } 
      } 

         ListView1.DataSource = dvProducts; 
        ListView1.DataBind(); 

     } 
+0

あなたは結果を連結し、最終的な出力を表示したいしたいですか? – Pankaj

答えて

5

例:

Datatable newTable = new DataTable(); 

      foreach(string s1 in list) 
      { 
       if (s1 != string.Empty) { 
        dvProducts.RowFilter = "(CODE like '" + serachText + "*') AND (CODE <> '" + s1 + "')"; 
        foreach(DataRow dr in dvProducts.ToTable().Rows) 
        { 
         newTable.ImportRow(dr); 
        } 
       } 
      } 
ListView1.DataSource = newTable; 
ListView1.DataBind(); 
+0

上記のコードを試してください。 – las

+0

このリンクとフォーマットリストビューを自分自身でチェックすると、http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.items.aspx – las

+0

も上書きされます。私は、データビュー内のs1の値を省略し、いくつかのテーブルに格納したい –

13
DataView view = new DataView(); 
view.Table = DataSet1.Tables["Suppliers"]; 
view.RowFilter = "City = 'Berlin'"; 
view.RowStateFilter = DataViewRowState.ModifiedCurrent; 
view.Sort = "CompanyName DESC"; 

// Simple-bind to a TextBox control 
Text1.DataBindings.Add("Text", view, "CompanyName"); 

参考: http://www.csharp-examples.net/dataview-rowfilter/

http://msdn.microsoft.com/en-us/library/system.data.dataview.rowfilter.aspx

+0

私はview.RowStateFilter = DataViewRowState.ModifiedCurrentを与えた;私は空のデータビューを示します。データビューでs1の値を省略したい –

+0

view.RowFilter = "City!= 'Berlin'"; –

関連する問題