-2

jQueryを使用してドロップダウンリスト(asp.netサーバーコントロール)の値を設定するという問題が発生していますが、ポストバック時に選択された値が変更されません。コントロールはデータバインドされていないため、この問題は変更が上書きされることとは関係がないと思います。コントロールはWizardControl内にありますが、これもこの問題とは関係がないと思います。クライアント側では、すべてが期待どおりに機能します。

これが私のコードです:

<asp:DropDownList runat="server" ID="MilitaryBackgroundSelect" ClientIDMode="Static">
    <asp:ListItem Text="" Value="" Selected="True" />                        
    <asp:ListItem Text="No" Value="0" />
    <asp:ListItem Text="YES, IN THE ARMED FORCES" Value="1" />
    <asp:ListItem Text="YES, IN THE RESERVES" Value="2" />
    <asp:ListItem Text="YES, IN THE NATIONAL GUARD" Value="3" />
    <asp:ListItem Text="REFUSED" Value="-7" />
    <asp:ListItem Text="DON'T KNOW" Value="-8" />
    <asp:ListItem Text="MISSING DATA" Value="-9" />
</asp:DropDownList>

このコードを使用して、クライアント側でドロップダウンリストを設定しています。

 $(document).ready(function(){ 
      $('#MilitaryBackgroundSelect').val("1");
 });

注:ドロップダウンリストでclientidmodeをstaticに設定したので、jQueryを使用して問題なく操作できます。以下はレンダリングされたHTMLです。idフィールドに注意してください。

<select name="ctl00$ctl00$MainContent$MainContentNested$AHHQ_DataEntryWizard$MilitaryBackgroundSelect" 
id="MilitaryBackgroundSelect">
    <option value=""></option>
    <option selected="selected" value="0">No</option>
    <option value="1">YES, IN THE ARMED FORCES</option>
    <option value="2">YES, IN THE RESERVES</option>
    <option value="3">YES, IN THE NATIONAL GUARD</option>
    <option value="-7">REFUSED</option>
    <option value="-8">DON&#39;T KNOW</option>
    <option value="-9">MISSING DATA</option>
</select>
4

2 に答える 2

2

サーバー上で実行しているので、使用する必要があります

<%= someObject.ClientID %>

通常のIDの代わりに

また、ドロップダウンを設定するjqueryコードが範囲内にあることを確認してください

 $(document).ready(function(){ 
      $('#militaryBackgroundSelect').val(-1);
 });

たぶん、jqueryの後のバージョンで使用できます

 $("#militaryBackgroundSelect option[value='-1']").attr("selected", "selected");
于 2012-12-28T17:48:07.827 に答える
0

どうやら、javascriptを使用してドロップダウンリストを変更しても、更新されたコントロールがサーバーにポストバックされることはありません(fiddler2を使用して確認済み)。理由はわかりませんが、いくつかの回避策があります。

  1. 非表示フィールドを使用できます。ドロップダウンリストの値を変更すると、非表示の値も更新されます。これは、jQueryを使用してこれを行うために使用したスニペットです。

     $(document).ready(function(){ 
          $('#dropdownelelement').change(function() {
    
           var elementID = $(this).attr("id");
    
           $("#" + elementID + "hidden").val($(this).val());
    
           });   
    

    });

  2. ASP.NetAJAXToolkitコンボボックスコントロールを調べました。クライアントブラウザにレンダリングされるときに、値を格納するために非表示のフィールドを使用するため、上記のアプローチと同様に機能します。

結局、ユーザー入力に基づいてどのフィールドを有効または無効にするかというロジックの一部が非常に複雑だったため、両方のアプローチを拒否する必要がありました。コードを更新パネルに配置し、有効なロジックを駆動するコントロールで自動ポストバックを有効にし、バリデーターコントロールを使用してロジックを適用しました。それは厄介な画面のちらつきを引き起こしますが、コードははるかに単純です。

助けようとしたすべての人に感謝します。

于 2012-12-29T14:23:03.387 に答える