Asp: RadioButtonList все еще отправляет обратно на сервер, даже если проверка клиента не удается? - PullRequest
1 голос
/ 04 ноября 2008

Этот запрос относится к этому одному, который я спросил вчера. У меня есть список переключателей на моей странице asp.net, определенный следующим образом:

<asp:RadioButtonList ID="rdlSortBy" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" AutoPostBack="True" >
       <asp:ListItem Selected="True">Name</asp:ListItem>
        <asp:ListItem>Staff No</asp:ListItem>
</asp:RadioButtonList>

На стороне клиента я делаю следующие проверки:

rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"

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

Что может быть не так?

Ответы [ 2 ]

2 голосов
/ 07 ноября 2008

Я исправил это, проблема была в том, что я вместо этого прикреплял «onclick» RadioButtonList к отдельным радиокнопкам.

Это исправление:

rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
    rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
1 голос
/ 04 ноября 2008

Код OnClick, который вы используете для «проверки», запускается, а затем запускается код, отправляющий форму обратно, которую вводит сам элемент управления.

Вам необходимо перехватить этот процесс PostBack и остановить его, прежде чем он отправит форму клиентской стороне. Лучший способ сделать это - использовать CustomValidator и, в частности, свойство ClientValidationFunction. Это позволит вашему JavaScript сигнализировать, что пост не должен происходить из-за ошибки проверки.

...