Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在GridView标题中设置按钮控件的可见性_Asp.net_Webforms - Fatal编程技术网

Asp.net 在GridView标题中设置按钮控件的可见性

Asp.net 在GridView标题中设置按钮控件的可见性,asp.net,webforms,Asp.net,Webforms,我有一个gridview,它显示数据表中的条目。通过在网格视图标题中使用文本框和搜索按钮,用户可以选择表中数据的子集。“搜索”按钮触发gridview行命令,并更改基础sqlDataSource的select命令,并将文本框中的文本值作为参数添加 这工作很顺利 此外,我在标题中有一个“ShowAll”按钮,用于清除选择参数,因此表中的所有条目都会显示出来。同样,这是完美的 不起作用的是控制“全部显示”按钮控件的可见性。以下是数据网格标头模板的html标记: <HeaderTemplate&

我有一个gridview,它显示数据表中的条目。通过在网格视图标题中使用文本框和搜索按钮,用户可以选择表中数据的子集。“搜索”按钮触发gridview行命令,并更改基础sqlDataSource的select命令,并将文本框中的文本值作为参数添加

这工作很顺利

此外,我在标题中有一个“ShowAll”按钮,用于清除选择参数,因此表中的所有条目都会显示出来。同样,这是完美的

不起作用的是控制“全部显示”按钮控件的可见性。以下是数据网格标头模板的html标记:

<HeaderTemplate>
    <asp:Button ID="btnShowAll" runat="server" CausesValidation="False" CommandName="ShowAll" Text="Show All" />
    <asp:Button ID="btnSearch" runat="server" CausesValidation="True" CommandName="Search" Text="Search" ValidationGroup="vldSearch" /><br />
    <asp:TextBox ID="txtSearchName" runat="server"></asp:TextBox>&nbsp;
    <asp:RequiredFieldValidator ID="vldSearchName" runat="server" ErrorMessage="You have to provide an attorney name to search for." Text="*" ControlToValidate="txtSearchName" ValidationGroup="vldSearch" ForeColor="White"></asp:RequiredFieldValidator>
</HeaderTemplate>
trace语句正在显示正确的可见状态-如果单击“show all”按钮,我将在sqlAttorneys sqlDataSource上执行SelectParameters.Clear()操作

我的问题是因为误解了“FindControl”方法的工作原理——我假设我定义的新BTN showall实际上是对aspx页面上“物理”控件的引用,因此我对本地对象所做的任何更改都会反映在页面上的控件中


如果不是这样,那么获取网格视图标题行中按钮控件引用的最佳方法是什么?

我成功地使按钮行为正常工作-这与我在整个过程中设置按钮可见性的位置有关。我将代码块(基于搜索参数的存在设置按钮可见性)移动到数据网格的数据绑定事件中,按钮的可见性被设置为它应该的样子

我怀疑这是因为在整个数据绑定过程中,根据整个网格视图和每个网格行的状态,使用适当的模板对象渲染每一行。因此,对按钮的visible属性所做的任何更改都将在数据绑定过程中被覆盖。通过改变代码设置可见性,直到数据绑定完成后,它才生效

If Not Me.dgAttorneys.HeaderRow Is Nothing Then
    Dim btnShowAll As Button = Me.dgAttorneys.HeaderRow.FindControl("btnShowAll")
    btnShowAll.Visible = Me.sqlAttorneys.SelectParameters.Count > 0
    Trace.Write("Show all status is " & btnShowAll.Visible.ToString)
End If