客戶端用javascript填充Dropdownlist,服務器端獲取不到Dropdownlist的值

今天遇到一個奇怪的問題,某一頁面須要使用三級級聯下拉列表框。爲提升用戶體驗,採用jQuery的cascadingDropDown插件調用後臺Web Services來實現ajax填充。javascript

填充沒有任何問題,可是在服務器端卻取不出來下拉表中的內容。頁面代碼以下。 java


<form id="form1" runat="server"> 
<div> 
<h3>看看用js填充的dropdownlist控件在服務器端能讀出來嗎?</h3> 
三個級聯下拉列表框: 
<asp:DropDownList runat="server" id="bigTypeList" Width="150"> 
</asp:DropDownList> 
<asp:DropDownList runat="server" id="typeList" Width="150"> 
</asp:DropDownList> 
<asp:DropDownList runat="server" id="smalltypeList" Width="150"> 
</asp:DropDownList> 
<br /> 
<asp:Button runat="server" Text="讀取下拉表" ID="OK" onclick="OK_Click" /><br /> 
你選的是:<asp:Label runat="server" Text="Label" ID="label1"></asp:Label> 
</div> 
</form> 


用來測試的後臺代碼以下。 
ajax


protected void OK_Click(object sender, EventArgs e) 

ListItem[] array = new ListItem[3]; 
array[0] = bigTypeList.SelectedItem; //爲null 
array[1] = typeList.SelectedItem; //爲null 
array[2] = smalltypeList.SelectedItem; //爲null 


事實證實,在服務器端讀取客戶端填充的DropDownList控件的值時,根本讀不到任何內容。DropDownList.Items.Count爲0,DropDownList.SelectedItem爲null。 
那麼,怎麼獲得這個值呢,只好使用Request.Form["控件的客戶端ID"]了。以下代碼所示。 
服務器


string s=Request.Form[typeList.ClientID]; 


附:頁面中的JavaScript文件。 
測試

複製代碼代碼以下:
<script language="javascript" type="text/javascript">  $(function () {  var bigId = '#<%=bigTypeList.ClientID%>';  var mediumId = '#<%=typeList.ClientID%>';  var smallId = '#<%=smalltypeList.ClientID%>';  $(bigId).cascadingDropDown(mediumId,  '../Services/AutoTypeService.asmx/getAutoType',  { valueMember: 'id', displayMember: 'name', cascadingArgName: 'parent' });  $(mediumId).cascadingDropDown(smallId,  '../Services/AutoTypeService.asmx/getSubAutoType',  { valueMember: 'id', displayMember: 'name', cascadingArgName: 'parent' });  });  </script> 
相關文章
相關標籤/搜索