私は次のマークアップがあります。これまでのASP.NET/VB.NET:Dropdownlist SelectedIndexChangedがonchange = "javascript:return true;"を発生させない
<asp:DropDownList ID="dd1" AutoPostBack="true" runat="server">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="dd2" AutoPostBack="true" onchange="javascript:return true;" runat="server">
<asp:ListItem Value="1">3</asp:ListItem>
<asp:ListItem Value="2">4</asp:ListItem>
</asp:DropDownList>
有線を:DD2のインデックスが変更された場合
Protected Sub changed1(sender As Object, e As EventArgs) Handles dd1.SelectedIndexChanged
End Sub
Protected Sub changed2(sender As Object, e As EventArgs) Handles dd2.SelectedIndexChanged
End Sub
、あなたは右、火災にそのハンドラを期待しますか?まあ、そうではありません。代わりに、dd1のハンドラがそのインデックスが変更されたときに起動された後に、 "キューに入れられ"、起動されます。もしあなたがonchange="javascript:return true;"
をdd2から外したら、それはうまくいきます。
ここで何が起こっているのか分かりませんか?
編集:私の最初の答えは、ドロップダウンリストのリターン式を使用すると、ボタンのクリックイベントと同じようには動作しませんが、以前はドロップダウンリストでこれを行ったことを誓っています。
アップデート:私はJavaScriptでこれを行うことによって、発射するサーバーイベントを強制することができる午前:
__doPostBack("<%=dd2.ClientID %>", '');
私はこれをしなければならない理由を私は見ていないが、それは動作します。しかし、私はまだそれを他の方法でやりたいと思っています。誰かが知っていれば私に知らせてください。
私はバリデーションを使用していますか? – oscilatingcretin
バリデーションを使用しているのですか?ページにバリデータがあるが、DropDownListがバリデーションをトリガしないようにするには、 'CausesValidation'をfalseに設定します。それ以外の場合は、 'AutoPostBack'をtrueに設定して、すべて正常です。 –
私の例は、私が既にAutoPostBack = "true"を持っていることを示しています。私はまた、検証で何もしていません。私は、trueまたはfalseを返すかどうかによって、サーバーサイドのイベントが発生しないようにしたいだけです。 – oscilatingcretin