2011-04-27 49 views
0

嗨,我有一個文本框和一個gridview。我可以知道什麼是在文本框中輸入內容的最佳方式,它會根據關鍵字自動過濾gridview。名稱自動搜索過濾器不轉換爲DataTable

我已經成功地做了,但條件只有當它轉換爲dataTable。
bsCourse.DataSource = linqHelper.ToDataTable(course.Get() as List<Course>); gvCourse.DataSource = bsCourse;

private void txtSearch_TextChanged(object sender, EventArgs e) 
    { 
     string input = txtSearch.Text.Trim().ToLower(); 
     if (input.Length > 0) 
      bsCourse.Filter = "Name like '" + input + "%'"; 
     else 
      bsCourse.Filter = ""; 
    } 

是否有沒有數據轉換到DataTable該自動篩選尋找更好的? 我正在使用LINQ到SQL。 謝謝

回答

0

我通常使用正則表達式篩選出要隱藏哪些行。在這個例子中,我使用了一個UltraGrid(Infragistics),但是這個過程對於gridview來說可能是相同的。

private void searchBox_TextChanged(object sender, EventArgs e) 
{ 
    if (gridUsers.Rows.Count > 0) 
    { 
     foreach (UltraGridRow row in gridUsers.Rows) 
     { 
      if (Regex.IsMatch(row.Cells[1].Value.ToString(), searchBox.Text, RegexOptions.IgnoreCase)) 
      { 
       gridUsers.Rows[indexCounter].Hidden = false; 
      } 
      else 
      { 
       gridUsers.Rows[indexCounter].Hidden = true; 
      } 
     } 
    } 
} 

它可能不是最好的方法(特別是對於很多行非常大的網格),但它適用於我。

0

你可以嘗試LINQ的方式,這種方式:

List<Course> courses = (from i in course.Get() 
         select new Course() { 
          // Set your property value here. 
         }).ToList(); 

bsCourse.DataSource = courses;