无法通过过滤 GridView 后检测 GridView 是否为空来隐藏 C# 中的按钮

Cannot hide a button in C# by detecting if a GridView is empty after the GridView has been filtered

所以在我继续之前你应该知道我已经尝试过 GridView1.Rows.Count == 0,SqlDataSource1.FilterParameters.Count==0,我已经找遍了但似乎找不到答案.这是我的代码:

 protected void FilterLP_Button_Click(object sender, EventArgs e)
    {
        string ddl = FilterDDL.SelectedValue;
        if (ddl == "Maintenance_ID")
        {
            RegularExpressionValidator1.Enabled = true;
            RegularExpressionValidator1.ValidationExpression = "^[0-9]*$";
            string FilterExpression = "Convert(Maintenance_ID , 'System.String')  LIKE '%{0}%'";
            SqlDataSource1.FilterParameters.Clear();
            SqlDataSource1.FilterParameters.Add(new ControlParameter(FilterDDL.SelectedValue, "TextBox1", "Text"));
            SqlDataSource1.FilterExpression = FilterExpression;
        }
        else
        {
            string FilterExpression = string.Concat(FilterDDL.SelectedValue, " LIKE '%{0}%'");
            SqlDataSource1.FilterParameters.Clear();
            SqlDataSource1.FilterParameters.Add(new ControlParameter(FilterDDL.SelectedValue, "TextBox1", "Text"));
            SqlDataSource1.FilterExpression = FilterExpression;
        }
        if (GridView1.Visible == false)
        {
            AddRecord_Btn.Visible = false;
        }
    }

现在我的 GridView1.Visible == false 几乎只是一个占位符,但在执行堆栈跟踪后,我发现即使在我完成 Rows.Count 或任何计数之后仍有隐藏的行。

这里是设计中的GridView:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display." BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical" DataKeyNames="Laptop_ID" OnRowCommand="GridView1_RowCommand" >
    <AlternatingRowStyle BackColor="#DCDCDC" />
    <Columns>
     ...

所以当过滤后没有记录时,我会出现一条消息。

有没有我遗漏的东西?

您必须在自定义过滤器逻辑后手动重新绑定 GridView。