【问题标题】:ASP.net - TextBox input to filter GridviewASP.net - 用于过滤 Gridview 的文本框输入
【发布时间】:2021-01-03 09:26:36
【问题描述】:

我有一个 GridView 与来自 SQL Server 的数据相结合。

我希望 GridView 通过仅选择电影的第一个字母来显示所有电影和客户的姓名和姓氏。用户将在文本框中输入第一个字母。

我认为<asp:ControlParameter可以在这里使用,但我不知道如何。

这里是它的设计:

搜索论坛,我找到了类似这个解决方案的东西,但它给了我一个错误 - System.NullReferenceException

    protected void Button1_Click(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(TextBox1.Text))
    {
        (GridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("FirstName LIKE '{0}%'", TextBox1.Text);
    }
}

很高兴得到一些线索,

提前谢谢你!

【问题讨论】:

  • 异常意味着您正在操作的对象之一为空。你有没有通过一步步调试检查是哪个对象导致了这个异常?
  • @MarleneHE 我试过了,但我想不通。它直接跳到上面的行。
  • 我的猜测是,由于您在 aspx 页面上使用 SqlDataSource,GridView1.DataSource as DataTable 为 null,因为该代码在数据绑定到 GridView 之前执行。
  • @VDWWD 好的,谢谢,知道如何做我正在搜索的内容吗?
  • 由于按钮单击执行回发,您可能希望将数据源放在会话变量中(并在每次回发时更新它)。我认为数据源为空,因此引发错误。

标签: c# asp.net gridview data-binding textbox


【解决方案1】:

我找到了解决办法——如何使用<asp:ControlParameter

<asp:SqlDataSource ID="SqlDataSource_Movie" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>" SelectCommand="(long generated code, than)--> WHERE (MovieName LIKE @Text + '%') ORDER BY FirstName ASC">
        <SelectParameters>    <asp:ControlParameter  ControlID="TextBox1" Name="Text"/>   </SelectParameters>
        </asp:SqlDataSource>

现在我可以输入电影的第一个字母,它会过滤 GridView 以显示所有租借以该字母开头的电影的用户。

谢谢

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 2011-05-08
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2016-06-15
    • 2011-04-13
    相关资源
    最近更新 更多