客户端用JavaScript填充DropDownList控件 服务器端读不到值

  填充没有任何问题,但是在服务器端却取不出来下拉表中的内容。页面代码如下。

  

复制代码 代码如下:

  <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>

  用来测试的后台代码如下。

  

复制代码 代码如下:

  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>

  结束。