3

私は変更時にサーバーにポストバックし、いくつかの日付で2番目のドロップダウンリストをポピュレートするドロップダウンリストを含むasp.netフォームを持っています。asp.netポストバックがクライアント側の検証後に防止されました

フォームには、検証済みのクライアント側と一部のサーバー側のフィールドも含まれています。

ここに私が抱えている問題があります。クライアント側で検証エラーが発生した場合は、ドロップダウンリストを変更してください.2番目のドロップダウンには値が設定されません。最初のドロップダウンリストを再度変更すると、期待通りに機能します。ドロップダウンリストが検証する必要がない場合

<asp:UpdatePanel ID="UpdatePanel1" runat="server" > 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="ddl1st" EventName="SelectedIndexChanged" /> 
    </Triggers> 
    <ContentTemplate> 
     <asp:DropDownList ID="ddl1st" Width="190" AutoPostBack="true" OnSelectedIndexChanged="ChooseDates1st" runat="server" /> 
     <asp:DropDownList ID="ddlDepart1st" AutoPostBack="true" runat="server" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

答えて

4

私はupdatepanelsを使用する前に何度もこの問題に遭遇しました。

私はフィールドを検証する必要がある場合、それがまだupdatepanelsで動作するには要素上に実際にCausesValidation="true"を設定する必要があることがわかりました。

これがあなたを助けてくれることを願っています!

1

function checkPassengers() { 
    if($("#testField").val() == "Name *" || $("#testField").val() == "") { 
      $("#pltester").prepend("<p class='fillall'>Please fill in all fields marked with *</p>"); 
      return false;  
    } 
}; 

ドロップダウン:

<asp:Button ID="btnSubmit" Text="Submit" runat="server" OnClientClick="Page_ClientValidate(); return checkPassengers();" OnClick="Page_Transfer" ValidationGroup="FormSubmit" /> 

はここに私のクライアント側の検証です:

は、ここに私の送信ボタンです最初のドロップダウンリストにCausesValidation="false"を設定することができます。これにより、バリデーションがトリガーされないので、自由に変更することができます。

また、DropDownListを別のValidationGroupに配置して、変更することで他のコントロールの検証がトリガーされないようにすることもできます。

+0

のためのドロップダウンを検証する必要がありません – Tom

0
function validateCommand(group) { 
     if (typeof (Page_ClientValidate) == 'function') { 
      Page_ClientValidate(group); 
      if (Page_IsValid) { 
       Page_BlockSubmit = !confirm('Are you sure?'); 
      } 
     } 
    } 
3

は単にCausesValidation="true"が私のために問題を解決できなかった設定します。これは、aspのドロップダウンリストのSelectedIndexChangeイベントを使用する際に問題となります。 私が見つけた回避策は、ポストバックの前に存在しない検証グループ名を検証することにより、フロントエンドでjsを使って検証をリセットすることでした。

function ignoreValidation() { 
      if (typeof Page_ClientValidate != 'undefined') { 
       Page_ClientValidate('reset-validation'); 
       Page_BlockSubmit = false; 
      } 
      return true; 
} 

そして、それが動作しませんので、ドロップダウンリスト

<asp:DropDownList CausesValidation="false" onchange="ignoreValidation();" runat="server" ID="CustomerDropDownList" OnSelectedIndexChanged="LoadCustomers" AutoPostBack="true"/>

関連する問題