无法通过过滤 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。
所以在我继续之前你应该知道我已经尝试过 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。