2013-05-17 2 views
0

순간 나는 그것을 채우는 SQL 문을 호출하는 dropdownlist에서 선택한 것에 따라 내 gridview 필터링하려면이 코드를 사용하고 있습니다.격자보기를 필터링하는 다른 방법이 있습니까?

protected void SetYear(object sender, EventArgs e) 
    { 
     DropDownList ddl = (DropDownList)sender; 
     if (filter != null) 
     { 
      if (filter.ContainsKey("Year 1")) 
      { 
       foreach (ListItem li in ddl.Items) 
       { 
        if (li.Text == filter["Year 1"].ToString().Substring(2, filter["Year 1"].ToString().Length - 3)) 
        { 
         li.Selected = true; 
         return; 
        } 
       } 
      } 
     } 
    } 
    protected void DropDownList1_SelectedIndexChanged1(object sender, EventArgs e) 
    { 
     DropDownList dd = (DropDownList)sender; 
     if (dd.SelectedItem.Text != "Please Select") 
     { 
      if (filter.ContainsKey("Year 1")) 
      { 
       filter["Year 1"] = "='" + dd.SelectedItem.Text + "'"; 
      } 
      else 
      { 
       filter.Add("Year 1", "='" + dd.SelectedItem.Text + "'"); 
      } 
     } 
     else 
     { 
      filter.Remove("Year 1"); 
     } 
     ApplyGridFilter(); 
     GridView1.PageIndex = 0; 
    } 

내가 할 수있는 다른 방법이 있는지 궁금합니다.

답변

0

당신이하고있는 길은 괜찮습니다. 업데이트 패널을 사용하여 전체 다시 게시를 피할 수 있습니다. 다른 방법은 다음과 같습니다.

페이지로드 및 하위 순차 요청이 데이터 테이블 자체의 레코드를 필터링 할 때 결과를 처음으로 가져옵니다.

dt.DefaultView.RowFilter = "Name LIKE 'XXX' " 

또한 컬렉션을 사용하는 경우 LINQ를 사용하여 레코드를 필터링합니다. 하지만이 모든 방법으로는 날짜 기록까지 남기지 않습니다.

관련 문제