2012-04-04 6 views
8

Я хочу фильтровать данные в событии textchange в списке, поэтому я использую dataview для фильтрации данных. Проблема в приведенном ниже коде заключается в том, что я использую dataview внутри для каждого, так что он проверяет только одно условие, которое является последним значением, которое требуется только, я хочу проверить значение в s1 с dataview, а оставшееся значение должно связываться со списком.Как фильтровать данные в dataview

например: если я нахожу a в текстовом поле, он должен отображать все значения элементов, начиная со значения, такого как anandha kumar, anna ect. предположим, что я сохраняю значение anandha 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 в dataview и сохранить в некоторой таблице –

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"); 

Ref: http://www.csharp-examples.net/dataview-rowfilter/

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

+0

i дал view.RowStateFilter = DataViewRowState.ModifiedCurrent; Я показываю пустой файл. Я хочу опустить значение s1 в dataview –

+0

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

Смежные вопросы