У меня есть представление сетки asp.net, которое я связываю во время выполнения с пользовательским объектом List.Я хочу добавить строку фильтра под строкой заголовка в каждом столбце, и при нажатии кнопки фильтра данные сетки должны фильтроваться на основе значений, записанных в текстовых полях фильтра.требование кажется странным, но это то, что хочет клиент.пожалуйста, помогите с подсказкой.
код aspx:
<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); }
Добавьте текстовое поле и кнопку в шаблон заголовка.
Напишите запрос на нажатие кнопки и получите значение.
Запрос что-то вроде select * from tbl, где col как '% val%'
Привязать значение к gridView.
Я думаю, это решит для вас