代码如下,运行之后,在动态添加的那个文本框text_1中输入asd,然后点击下拉列表select,选第二项,然后进入.cs文件的select_SelectedIndexChanged函数,可是这时候我为什么取不到hidden里的值呢?,我把hidden改成text也不好使...
请各位高手指点
不多说,上代码,原来很复杂,我简化了下
.aspx<head>
...
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:DropDownList ID="select" runat="server" OnSelectedIndexChanged="select_SelectedIndexChanged" AutoPostBack="True">
         <asp:ListItem Value="1">...</asp:ListItem>
         <asp:ListItem Value="2">...</asp:ListItem>
    </asp:DropDownList>
    <asp:UpdatePanel ID="UpdatePanel_test" runat="server">
         <ContentTemplate>
              <div id="div_test" runat="server">
              </div>
              <input type="text" id="hidden_test_1" runat="server" />
              <input type="text" id="hidden_test_2" runat="server" />
         </ContentTemplate>
         <Triggers>
              <asp:AsyncPostBackTrigger ControlID="select" />
         </Triggers>
    </asp:UpdatePanel>
    <script type="text/javascript">
        var globals = {}; 
        globals.controlIdentities = {}; 
        globals.controlIdentities.hidden_test_1 = '<%= hidden_test_1.ClientID %>';
    </script>
    </form>
</body>
.jsfunction fill(id_str)
{
    document.getElementById(globals.controlIdentities.hidden_test_1).value=document.getElementById(id_str).value;

.csprotected void Page_Load(object sender, EventArgs e)
{
    int i=1;
    protected void show(i);
}protected void show(int i)
{
    if(i==1)
    div_test.innerHtml="<input type='text' id='text_1' value='' onblur='javascript:fill(this.id);'>";
    if(i==2)
    div_test.innerHtml="<input type='text' id='text_2' value='' onblur='javascript:fill(this.id);'>";
}protected void select_SelectedIndexChanged(object sender, EventArgs e)
{
    int selectedvalue=int.Parse(menu_test_choose.SelectedValue);
    string a=hidden_test_1.Value;//这里根本取不到hidden_test_1.Value,为什么呢?
    show(selectedvalue);
}

解决方案 »

  1.   

    帮你顶下,应该能取到,你的JS文件有加载完吗?放入HTML最底端吗?
      

  2.   


    protected void Page_Load(object sender, EventArgs e)
    {
      if(!IsPostBack) 
      {
       int i=1;
        protected void show(i);
      }
    }
      

  3.   

    Page_Load中你加 protected void 这个干吗
      

  4.   

    protected void select_SelectedIndexChanged(object sender, EventArgs e)
    这个是服务器端的方法,你好像是js里给hidden赋值的吧。这个怎么能取得到值呢。js只操作客户端。
      

  5.   

    后来得到Hidden标签的值?用Request.Params["这里是隐藏域的名字"]得到值啊
      

  6.   

    不用ajax的话可以把该值存储在某个隐含控件比如<input type="hidden" value=<%=后台的值%>> 再用js获取好了,用AJAX的话最方便了.
    要得到多个值可以用while(rs.read) {aa=aa+rs(0)+"|";}aa返回的是用"|"分隔开的字符串,用JS提取出来后用spilt分离出来就可以了
      

  7.   

    你把hidden 放在那里了 
      

  8.   

     刚开始接触asp.net  不知道我说的对不对,你看看你的字母有没有写错。text还是test
      

  9.   

    谢谢3L,果然是IsPostBack的问题!
    也谢谢LS的各位
    结贴了