我在复合控件里用JAVASCRIPT代码来触发TextBox的TextChanged事件能够运行,为什么把控件放到有母版页里就不行了,事件触发不了

解决方案 »

  1.   

    放入 master ?那么多半是由于 textbox 的 客户端id 变了动态获取 id -> var txt = document.getElementById('<% =TextBox1.ClientID %>');
    txt.change();
      

  2.   


    支持
    因为你把控件放在MasterPage里面
    页面会自动为控件添加前缀
    这样你原来写死的javascript就没有用了
      

  3.   

    肯定是ID变了。。找不到ID。。一定触发不了
      

  4.   

    ID我已经锁定了,文本框的 显示也已经改变了,但无法触发TextChanged
      

  5.   

    post your codes to be reviewed, plz
      

  6.   

    TableCell tc_text = new TableCell();
                tc_text.ID = this.UniqueID + "Text";
                TextBox tb = new TextBox();
                tb.BorderStyle = BorderStyle.None;
                tb.ID = this.UniqueID + "TEXTBOX";
                tb.Width = Unit.Pixel(100);
                tb.ForeColor = Color.DodgerBlue;
                tb.Text = ViewState["Text"].ToString();
                tb.AutoPostBack = true;
                //定制一个TextChanged事件,目的是当JS文件的ReturnValue方法改变tb的值时用ViewState记载下来
                tb.TextChanged += new EventHandler(pb.TextChanged);
                tc_text.Controls.Add(tb);
                tr.Cells.Add(tc_text); protected void TextChanged(Object sender, EventArgs e)
            {            ViewState["Text"] = ((TextBox)sender).Text.ToString();
            }
      

  7.   

    function ReturnValue(Text,id)
    { //选择值后更改Text属性并关闭弹出菜单 
        var Id=id.replace(/\$/g,"_");
        var Table= document.getElementsByTagName("table");
        for(var j=0;j<Table.length;j++)
        {
             if(Table[j].id.indexOf(Id)!=-1)
             {
                 var textbox=Table[j].getElementsByTagName("input");
                 for(var i=0;i<textbox.length;i++)
                 {
                      if(textbox[i].id.indexOf("TEXTBOX")!=-1 && textbox[i].parentElement.tagName=="TD")
                      {
                          textbox[i].value=Text;
                       }
                  }          }
        }其中TextBox tb的显示值已经改变了,可是tb.TextChanged += new EventHandler(pb.TextChanged);
    没有调用