我有一个用户控件包含着另外一个用户控件,现在我在一个页面中引用了父控件之后,需要在页面上的js中取到子用户控件中的一个文本框的值,问这么样才能办到?
因为在子用户控件中的控件<asp:TextBox id="txt1" runat="server"></asp:TextBox>到了页面后就变成
<input name="Operation1:Detail:txt1" type="text"  id="Operation1_Detail_txt1" style="width:70px;" value="aaaa" />了.
请帮忙取到value的值

解决方案 »

  1.   

    子控件的txt1设为public的.父控件再声明一个public属性如public ChildTextBox
    {
         get
    {
         return 子控件.txt1;
    }
    }调用页面.js:var txt =document.getElementById("<%=this.父控件id.ChildTextBox.ClientID%>");alert(txt.value);
      

  2.   

    呵呵,最笨的方法,直接取,就是灵活性不够:
    document.getElementById("Operation1_Detail_txt1").value
      

  3.   

    @cpp2017(慕白兄)
    大概我说的有的问题,我的js实际上是写在父控件里的
      

  4.   

    在父控件声明属性,返回它引用子控件的ID
    public string ChildTextBoxID
    {
    get
    {
    return this.子控件.txt1.ClientID;
    }
    }页面上 document.getElementById("<%= 父控件.ChildTextBoxID %>");
      

  5.   

    在父控件里还好做一点
    var ele = document.getElementById("<%= 子控件.txt1.ClientID %>");
    alert(ele.value);
      

  6.   

    @cpp2017(慕白兄)
    大概我说的有的问题,我的js实际上是写在父控件里的
    ==========>
    那就更简单子控件的txt1设为public的.父控件中var txt = document.getElementById("<%=子控件id.txt1.ClientID%>");
      

  7.   

    下次cpp回答了的话,我顶就好了 呵呵
      

  8.   

    在你的父控件 
    .cs中
    public 子控件 子控件ID;
    js块中var txtValue = document.getElementById("<%= 子控件ID.txt1.ClientID %>");
      

  9.   

    可是我没有办法获得子控件的id啊,在页面中所有的id都变化了
      

  10.   

    可是我没有办法获得子控件的id啊,在页面中所有的id都变化了
    =======》
    <%= 子控件ID.txt1.ClientID %> 这是运行服务器代码,这里的id是你控件的id
    <you:usercontrol runat="server" ID="ControlID" 是这个ID
      

  11.   

    子控件的id的id是肯定变化了的.要么怎么用"子控件ID.txt1.ClientID"  ClientID你要知道当前一般都是 "控件(索引)_text1"如果上面还有控件 那就是"父控件索引_子控件(索引)_text1"
    你在控件里的cs里response.write(txt1.ClientID)自然能看到在页面是如何呈现的。
      

  12.   

    @cpp2017(慕白兄)
    子控件的txt1设为public的.父控件再声明一个public属性如
    public ChildTextBox
    {
         get
    {
         return 子控件.txt1;
    }
    }
    调用页面.
    js:
    var txt =document.getElementById("<%=this.父控件id.ChildTextBox.ClientID%>");
    alert(txt.value);
    我试过了,取得的是null空值,因为属性是后台的,而js是前台执行的,所以在js执行的时候,属性肯定是没有赋值的,所以总是空值。var txtValue = document.getElementById("<%= 子控件ID.txt1.ClientID %>");
    这个我也试了,不行的,因为txt1已经被子控件包装起来了,实际上暴露的就是一个txt的string属性,在页面中直接使用子控件ID.txt1.ClientID 根本就是访问不到的
      

  13.   

    子控件加一个属性存子控件的ClientID的值
    页面后台就能取得这个值
    然后在你的JS代码中把这个值赋过去就可以得到txt1的ID了
      

  14.   

    你把子控件的ClientID值发送到前端去,前端用js取
      

  15.   

    應該是document.getElementById("父控件名"+"_"+"子控件名"+"_"+"文本框名").value