2012-04-04 39 views
8

Tôi muốn lọc dữ liệu trên sự kiện textchange trên listview vì vậy tôi sử dụng dataview để lọc dữ liệu. Vấn đề trong mã dưới đây là, tôi sử dụng dataview bên trong cho mỗi để nó kiểm tra chỉ có một điều kiện là giá trị cuối cùng chỉ mất, tôi muốn kiểm tra giá trị trong s1 với dataview và giá trị còn lại phải ràng buộc với listview.Cách lọc dữ liệu trong dataview

ví dụ: nếu tôi nhập an trong hộp văn bản, nó sẽ liệt kê tất cả các giá trị mục bắt đầu bằng giá trị như anandha kumar, anna ect. giả sử tôi giữ giá trị anandha kumar và anna trong mảng s1. Tôi nên liệt kê tất cả các giá trị khác mong đợi các giá trị mảng như antony ect ... trong 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

Bạn có muốn nối các kết quả và muốn hiển thị các kết quả cuối cùng? – Pankaj

Trả lời

5

Ví dụ:

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

Thử mã trên. – las

+0

Kiểm tra chế độ xem danh sách liên kết và định dạng này theo cách của riêng bạn, http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.items.aspx – las

+0

nó cũng nhận được ghi đè. tôi muốn bỏ qua các giá trị s1 trong dataview và được lưu trữ trong một số bảng –

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

tôi đã cho view.RowStateFilter = DataViewRowState.ModifiedCurrent; tôi cho thấy dataview trống. Tôi muốn bỏ qua giá trị s1 trong dataview –

+0

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

Các vấn đề liên quan