2011-04-27 3 views
0

안녕하세요, 저는 텍스트 상자와 gridview가 있습니다. 5 월 내가 무엇을 가장 좋은 방법은 텍스트 상자에 입력하고 자동으로 gridview 키워드를 기반으로 필터링을하는 방법을 알고 있습니다. 이름자동 검색 필터를 DataTable로 변환하지 않고

나는 successfuly하지만 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 = ""; 
    } 


이되는이 자동 필터 검색을위한 데이터 테이블에 데이터를 변환하지 않고 더 나은? SQL에 linq을 사용하고 있습니다. 감사합니다.

답변

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; 
관련 문제