1

このクエリは、私が昨日尋ねたこのクエリに関連しています。次のように定義された 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 検証が期待どおりに実行されることです。メッセージが表示され、ユーザーが変更を保存するまでページに留まることが期待されますが、代わりにページがポストバックされ、保存されていない変更が失われます。

何がうまくいかないのですか?

4

2 に答える 2

2

これを修正しました。問題は、個々のラジオ ボタンの代わりに RadioButtonList の「onclick」を付けていたことです。

これは修正です:

rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
    rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
于 2008-11-07T10:30:09.293 に答える
1

OnClick検証」に使用しているコードが実行されてから、コントロール自体が挿入するフォームをポストバックするコードが実行されています。

その PostBack プロセスをインターセプトして、クライアント側でフォームを投稿する前に停止する必要があります。これを行う最善の方法はCustomValidator、特に「ClientValidationFunction」プロパティを使用することです。これにより、検証エラーが原因でポストバックが発生しないことを JavaScript が通知できるようになります。

于 2008-11-04T11:55:40.763 に答える