2012-03-23 5 views
0

ドロップダウンリストに選択したオブジェクトがあることを認識させるにはどうすればよいですか? JQuery AJAX JSONを使用してサーバーコントロールのドロップダウンリストを作成しました。 ユーザは、前述のリストでオプションを選択します。 次に、serverControlボタンをクリックします。 「無効なポストバックまたはコールバック引数」が表示されます。ポストバックやコールバックデータを登録するためにClientScriptManager.RegisterForEventValidationメソッドを使用して1時間ほど試行した後、私はあきらめて、ページタグにEnableEventValidation = "false"を設定します。 これ以上のエラーはありませんが、dropdownlist.selectedの値を確認すると空になります。 ドロップダウンリストに選択したオブジェクトがあることを認識させるにはどうすればよいですか?Jquery Ajax ServerControl DropDownlist ajaxコール後に選択した項目

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Ajax.aspx.cs" Inherits="something" EnableEventValidation="false" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 

    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" language="javascript"> 
      $().ready(function() { 
        $("#ddlCountry1").change(function() { 
         $.ajax({ 
           type: "POST", 
           url: "Ajax.aspx/PopulateStates", 
           data: "{countryCode:" + "'" + bozo + "'" + "}", 
           contentType: "application/json; charset=utf-8", 
           dataType: "json", 
           success: function (msg) { 
             $("#ddlState").get(0).options.length = 0; 
             $("#ddlState").get(0).options[0] = new Option("Select State", "-1"); 

             $.each(msg.d, function (value, item) { 
               $("#ddlState").get(0).options[$("#ddlState").get(0).options.length] = new Option(item.Display, item.Value); 
             }); 
             var itemCount = $("#ddlState").children().length; 
             if (itemCount < 2) { 
               $("#ddlState").hide(); 
             } 
             else 
             { $("#ddlState").show(); }; 
           }, 
           error: function() { 
             alert("Failed to load states"); 
           } 
         }); 
        }); 
      }); 
    </script> 

    </head> 

及び形態

<body> 
     <form id="form1" runat="server"> 
      <div> 
       <table> 
        <tr><th>country</th><td> 
          <asp:DropDownList ID="ddlCountry1" runat="server" ClientIDMode="Static"> 
          </asp:DropDownList> 
        </td></tr> 
       <tr><th>state</th><td> 
         <asp:DropDownList ID="ddlState" runat="server" ClientIDMode="Static"> 
          </asp:DropDownList> 
        </td></tr> 
      </table> 
     </div> 
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 
    </form> 
</body> 

protected void Page_Load(object sender, EventArgs e) 
     { 
      BindCountryDropDown(); 
     } 

     private void BindCountryDropDown() 
     { 
      ddlCountry1.Items.Add(new ListItem("country1", "country1")); 
      ddlCountry1.Items.Add(new ListItem("country2", "country2")); 
      ddlCountry1.DataSource = managers.profileManager.GetCountries(); 
      ddlCountry1.DataTextField = "CountryName"; 
      ddlCountry1.DataValueField = "CountryAbbr"; 
      ddlCountry1.DataBind(); 
     } 

     [WebMethod] 
     public static ArrayList PopulateStates(string countryCode) 
     { 
      var p = managers.profileManager.GetStates(countryCode); 
      ArrayList myStates = new ArrayList(p.ToArray()); 
      return myStates; 
     } 


     protected void Button1_Click(object sender, EventArgs e) 
     { 
      var dd = ddlState.SelectedValue; //is empty 
     } 

答えて

1

ASP.NET IDの背後にあるコードは、クライアントIDではありません。これはポストバックの内部IDです。生成されたIDをブラウザーに表示するか、ドロップダウンのclientId属性が表示されます。

+0

だから私はjavascriptでそれをしなければならないのですか? – user1069733

関連する問題