2010-11-29 6 views
0

asp.net gridview가 있는데, 런타임시 사용자 지정 List 객체로 바인딩하고 있습니다. 각 열의 머리글 행 아래에 필터 행을 추가하고 필터 단추 그리드 데이터를 클릭하면 필터 텍스트 상자에 작성된 값을 기준으로 필터링해야합니다. 요구 사항이 이상하게 보일지라도 이것은 클라이언트가 원하는 것입니다. 어떤 단서를 가지고 도와주세요.asp.net gridview의 각 열에 텍스트 상자가있는 필터 행을 만듭니다.

답변

0

헤더 템플릿에 텍스트 상자와 버튼을 추가하십시오.

버튼을 눌러 쿼리를 작성하고 값을 가져옵니다.

* TBL에서 어디 COL '%의 발 %의'

바인딩 GRIDVIEW에 값 등의 선택과 같은 쿼리 뭔가.

나는이 뜻이 해결 생각에 당신

0

영문 코드 :

<asp:TemplateField> 
        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="150px" /> 
        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="150px" /> 
        <HeaderTemplate> 
         <table> 
          <tr> 
           <td align="center"> 
            <asp:ImageButton runat="server" ID="imgFilter1" ImageUrl="../Images/filter.png" Style="height: 20px; 
             width: 20px;" OnClick="imgFilter1_click" /> 
           </td> 
           <td align="center"> 
            <asp:TextBox runat="server" ID="gridTextboxFilter1" AutoPostBack="true" onTextChanged="gridTextboxFilter1_text_changed"> 
            </asp:DropDownList> 
           </td> 
          </tr> 
          <tr> 
           <td align="center" colspan="2"> 
            //your column header 
           </td> 
          </tr> 
         </table> 
        </HeaderTemplate> 
        <ItemTemplate> 
         <asp:Label runat="server" Text='<%# Eval("your_dataFeild") %>'> 
         </asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 

CS 코드 : 각 열에 대한

private void BindGrid(string strFilter) 
     {    
      try 
      { 
       // Simple created a table to bind with Grid view and 
       // populated it with data. 
       DataTable dt = new DataTable("sample"); 
       dt.Columns.Add("ID"); 
       dt.Columns.Add("Name"); 
       DataRow dr ; 
       for(int counter=1;counter<11;counter++) 
       { 
        dr = dt.NewRow(); 
        dr["ID"]=counter.ToString(); 
        dr["Name"]= "Cat" + counter.ToString(); 
        dt.Rows.Add(dr); 
       } 

       DataView dv = new DataView(dt); 
       if(strFilter != "") 
        dv.RowFilter="Name like '%" + strFilter + "%'"; 

       if (CategoryFilter == "") 
        gvCategory.DataSource = dv; 
       else 
        gvCategory.DataSource = dv; 
       gvCategory.DataBind(); 
      } 
      catch (Exception ex) 
      { 

      } 
      finally 
      { 

      } 
     } 

     protected void gridTextboxFilter1_text_changed(object sender, EventArgs e) 
     { 
      string text = ((TextBox)sender).Text; 
      BindGrid(text); 
     } 
+0

사용 –

관련 문제