2012-04-04 27 views
8

Chcę filtrować dane w zdarzeniu textchange na liście, więc używam DataView do filtrowania danych. Problem w poniższym kodzie jest, używam widok danych wewnątrz dla każdego, tak aby sprawdzał tylko jeden warunek, który jest ostatnią wartością tylko zajmuje, chcę sprawdzić wartość w s1 z danymi, a pozostała wartość powinna powiązać z listview.Jak filtrować dane w widoku danych

np .: jeśli wpiszę i w polu tekstowym, powinien on zawierać wszystkie wartości elementów zaczynające się od wartości takiej jak anandha kumar, anna ect. Przypuśćmy, że zachowam wartość anandha kumar i anna w tablicy s1. Powinienem wymienić wszystkie inne wartości, oczekując wartości tablicy jak antony ect ... in 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

Czy chcesz złączyć wyniki i chcą pokazać ostateczną wyjście? – Pankaj

Odpowiedz

5

Np

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

Spróbuj powyższego kodu. – las

+0

Sprawdź to łącze i wyświetl listę formatów według własnego, http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.items.aspx – las

+0

również zostanie nadpisane. chcę pominąć wartości s1 w widoku danych i przechowywać w niektórych tabelach –

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

dałem view.RowStateFilter = DataViewRowState.ModifiedCurrent; i pokazuje pusty widok danych. Chcę pominąć wartość s1 w widoku danych –

+0

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

Powiązane problemy