【发布时间】:2015-11-12 23:35:54
【问题描述】:
我在网格视图中显示了一些数据,一切正常。但是,我正在尝试包含一个带有搜索按钮的文本字段,以便用户能够按名称(这是表的第一列)过滤数据。因此,例如,用户将输入“James”,然后只显示名称为 James 的条目。 这是我的代码:
<asp:Button ID="Button1" runat="server" Text="Filter" OnClick="Button1_Click" />
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true"></asp:TextBox>
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataSourceID="ObjectDataSource1" >
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" SortExpression="Name" >
<HeaderStyle Width="450px" />
<ItemStyle HorizontalAlign="Center" Height="100px" Width="400px" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" />
</asp:BoundField>
<asp:BoundField DataField="Title" HeaderText="Title" ReadOnly="True" SortExpression="Title" >
<ItemStyle Width="400px" HorizontalAlign="Center" Height="100px" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" />
</asp:BoundField>
</Columns>
<HeaderStyle BackColor="#002d57" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#002756" HorizontalAlign="Left" />
<RowStyle ForeColor="#002756" />
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetData" TypeName="Test"></asp:ObjectDataSource>
在后面的代码中,我尝试过类似的操作,但它仍然显示了表格的所有结果,而不是我专门搜索的结果:
protected void Button1_Click(object sender, EventArgs e)
{
try
{
((DataTable)GridView1.DataSource).DefaultView.RowFilter = "Name like '%" + textBox1.Text.Trim() + "%' ";
}
catch (Exception) { }
}
有什么建议可以实现吗?
【问题讨论】:
-
为什么不直接设置
GridView1.RowFilter = string.Format("Name LIKE '%{0}%' , textBox1.Text); -
@MariaL :只是一件小事:Button1_Click 中的 try/catch 隐藏了所有异常......您应该显示或不隐藏它们。因为它可能是你问题的原因