2012-04-04 51 views
8

我想过滤listview上textchange事件的数据,所以我使用dataview来过滤数据。下面代码中的问题是,我在每个数据视图中使用dataview,以便它只检查一个条件,它仅仅是最后一个值,我想用dataview检查s1中的值,剩余值应该与listview绑定。如何过滤dataview中的数据

例如:如果我在文本框中键入应该列出所有开始像anandha库马尔的值项目值,安娜等。假设我在数组s1中保留anandha kumar和anna的值。我应该列出所有其他值,例如列表视图中的antony ect等数组值。

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 2012-04-04 11:20:38

回答

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 2012-04-04 11:08:42

+0

检查根据你自己的,http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.items.aspx – las 2012-04-04 11:14:38

+0

也得到改写这个链接和格式列表视图。我想省略数据视图S1值,并存储在某个表 – 2012-04-04 14:10:25

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;我显示空的数据视图。我想省略dataview中的s1值 – 2012-04-04 14:07:14

+0

view.RowFilter =“City!='Berlin'”; – 2012-04-06 12:08:57