Gridview: проверить, что SelectedIndex> -1 - PullRequest
0 голосов
/ 29 апреля 2009

В настоящее время у меня есть Gridview, и я хочу использовать проверку на стороне клиента, чтобы убедиться, что строка выбрана (т.е.: SelectedIndex > -1).

В данный момент я использую <asp:CustomValidator>, но хочу отойти от проверки на стороне сервера. Вот что я сейчас делаю:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField HeaderText="MSN" DataField="MSN" />
        <asp:CommandField ShowSelectButton="True" />
    </Columns>
</asp:GridView>
<asp:CustomValidator ID="cvSelected" runat="server" ErrorMessage="Please select!" />

А затем в коде (.cs):

Private Sub cvSelected_ServerValidate(ByVal source As Object, ByVal args As _
System.Web.UI.WebControls.ServerValidateEventArgs) Handles cvSelected.ServerValidate
    args.IsValid = (GridView1.SelectedIndex > -1)
End Sub

Ответы [ 2 ]

1 голос
/ 29 апреля 2009

Мне кажется, это нормально. Проверка на стороне клиента в этом конкретном случае звучит немного нечетко, как, например, проверка некоторого элемента, который, как вы ожидаете, будет частью сгенерированного сервером идентификатора. Очень хрупкий.

Обычно я делаю один дополнительный шаг и фактически создаю свой собственный элемент управления валидатора, который наследуется от BaseValidator . Делает инкапсуляцию и очиститель SoC, а также переносимую логику валидации.

0 голосов
/ 06 сентября 2009

В событии GridView_RowCreated () вашего кода за страницей вы можете добавить атрибуты в тег строки следующим образом:

e.Row.Attributes.Add("onclick", "SetRowSelected();");

Затем вам нужно включить функцию javascript «SetRowSelected ()» на вашей странице и установить для скрытого поля (например, с именем IsRowSelected) значение, подобное «true».

Затем вы можете добавить еще одну функцию javascript к событию «onclick» элемента управления, используемого для отправки страницы, и заставить его проверить значение скрытого элемента управления. Если это не так, просто отобразите предупреждение () для пользователя - в противном случае отправьте страницу.

Похоже, это будет работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...