У меня есть сетка, которая отображает записи из таблицы данных. Я даю пользователям возможность выбрать подмножество данных в таблице, имея текстовое поле и кнопку поиска в заголовке представления сетки. Кнопка поиска запускает команду строки gridview, изменяет базовую команду select sqlDataSource и добавляет текстовое значение из текстового поля в качестве параметра.
Это работает гладко.
Кроме того, у меня есть кнопка «Показать все» в заголовке, которая очищает выбранные параметры, поэтому отображаются все записи в таблице. Опять же, это работает отлично.
Что НЕ работает, так это управление видимостью кнопки «Показать все». Ниже приведена 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>
<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>
В обработчике событий Row Command, вот как я устанавливаю видимость кнопки:
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
Оператор трассировки показывает правильный видимый статус - если нажата кнопка «показать все», я выполняю SelectParameters.Clear () для sqlAttorneys sqlDataSource.
Моя проблема связана с неправильным пониманием того, как работает метод «FindControl» - я предположил, что мой новый btnShowAll, который я определяю, на самом деле является ссылкой на «физический» элемент управления на странице aspx, поэтому любые изменения, которые я делаю в своем Локальный объект отражается в элементе управления на странице.
Если это не так, как лучше всего получить ссылку на элемент управления кнопки в строке заголовка вида сетки?