怎样用JavaScript动态生成服务器端控件?
如能否用以下函数来动态生成有服务器端控件行?
           function addline(content)
           {        
               for (var j=0;j<content;j++)
               {
              newline=document.all.listother.insertRow();
              rowIndex = newline.rowIndex + 4;
                      var txtID='txtID'+rowIndex                              newline.insertCell(0).innerHTML=' <asp:TextBox ID='+txtID+' runat="server" Width="200px" ></asp:TextBox>'                                
              newline.style.textAlign = "center";               
               }
            }

解决方案 »

  1.   

    这样的服务器控件生成了有什么用吗?从原理上讲我认为是不可能的。服务器控件在DLL文件及后台的执行代码中必须有相应的实例,你这样动态生成了前台的代码没有后台对应的实例是不可能运行的,也没有相关的事件以及属性可执行。
      

  2.   

    客户端是不可能实现操作服务器端的,更何况生成。
    你需要明白,asp.net服务器端是经过编译之后,最终生成为客户端代码,相当于一个是老妈,一个是儿子,怎么可能儿子产生老妈呢
    Misssion Is Impossible建议你好好去学学Asp.Net和HTML协议的原理。
      

  3.   


    怎样用JavaScript动态生成服务器端控件?
    如能否用以下函数来动态生成有服务器端控件行?
               function addline(content)
               {           
                   for (var j=0;j<content;j++)
                   {    
                      newline=document.all.listother.insertRow();
                      rowIndex = newline.rowIndex + 4;
                          var txtID='txtID'+rowIndex                  

                      newline.insertCell(0).innerHTML=' <asp:TextBox ID='+txtID+' runat="server" Width="200px" ></asp:TextBox>'    
                                      
                      newline.style.textAlign = "center";                  
                   }
                }
    哈哈,笑死了,服务器控件,发送到客户端就HTML了啊,你还用服务器控件,不要搞笑了啊。可以变,不过服务器端要写一些东西
      

  4.   

    这种方法不行的,IE是无法解释你写的代码的,必须由服务端来生成控件不过客户端可以与服务端交互来实现动态添加控件,网上有很多这种例子去下个Ajax控件,很容易实现你要的功能,其实是个假象,感觉是浏览器自己生成的,其实已经回传了手写的话复杂点,既然你都可以写成js生成表格数据了,自己全客户端写也行啊,然后保存的时候把数据一起提交到服务器,提交一组数组到服务器,然后服务器分析成DataTable保存到数据库,呵呵,不知道我表达清楚没有
      

  5.   

    估计你的意思是想在客户端用脚本添加几个 input , 然后在服务器端得到输入的值是吧?不一定要用服务器控件的,服务器控件也只是方便你引用 用户从客户端提交上来的值,想想看以前没有asp.net 时怎么办?
    你肯定知道那些input 的 name 在客户端的命名规则,你可以自己做服务器端使用 Request[name] 的方式获取.方法很多,能实现你的需求即可.
      

  6.   

    这个跟跟服务器交互的,单纯JS不能识别Web控件
      

  7.   


    你在此可以胡乱写任何字符串,asp.net根本无法承认你这是什么服务器控件。
      

  8.   


        protected void Page_Load(object sender, EventArgs e)
        {
    UpdatePanel up = new UpdatePanel();
    up.ID = "UpdatePanel1";
    this.Form.Controls.Add(up); LiteralControl lc = new LiteralControl(DateTime.Now.ToString());
    up.ContentTemplateContainer.Controls.Add(lc); Button btn = new Button();
    btn.Text = "Refresh";
    up.ContentTemplateContainer.Controls.Add(btn);
        }
      

  9.   


    那我能不能如下ajax操作?
    function addline(content)
    {           
       Test.AddControls()           
    }
    Ajax.Utility.RegisterTypeForAjax(typeof(Test));[Ajax.AjaxMethod]
    public void AddControls()
    {
            UpdatePanel up = new UpdatePanel();
            up.ID = "UpdatePanel1";
            this.Form.Controls.Add(up);        LiteralControl lc = new LiteralControl(DateTime.Now.ToString());
            up.ContentTemplateContainer.Controls.Add(lc);        Button btn = new Button();
            btn.Text = "Refresh";
            up.ContentTemplateContainer.Controls.Add(btn);}        
      

  10.   

    newline.insertCell(0).innerHTML=' <asp:TextBox ID='+txtID+' runat="server" Width="200px" ></asp:TextBox>'   
    --------------------
    我狂晕.............
    你随便去打开一个页面的源码看看,有没有<asp:TextBox>这样的东西。。在aspx里之所以可以这么写都是因为他有一个自己特定的处理程序,你也可以自已写处理程序,继承httpHandle就可以
    在aspx里<asp:TextBox>这么写,到客户端表现的还是<input type="text" id="txt" ... />你直接用JS显示 <asp:TextBox>这个东西,浏览器根本不认识,它只认识<input type="text" id="txt" ... />所以你只可以用JS创建原素一般用createElement("") 方法
      

  11.   

    你只可以用JS创建原素一般用createElement("") 方法 ?
    不是很懂
      

  12.   

    不行的.
    你为什么要这么做?服务器端的控件最终输出到客户端还是变成了基本的html控件.所以你只需动态生成基本的那些html元素即可
      

  13.   

    顶!楼主的思路有问题,弄反了!换个思路解决问题,最好能更深入理解.net的原理!
      

  14.   

    客户端脚本是在服务端控件周期生成完成后执行的.  那时已经没有机会再生成服务端控件了. 
    最多只能设置把客户端dom元素数据提交到服务端.  第2章  服务器控件开发中的调试技术                   [阅读本章内容]
           第3章  从零开始开发服务器控件                         [阅读本章内容]
           第4章  服务器控件属性                                    [阅读本章内容]
           第5章  事件和数据回发机制                               [阅读本章内容]
           第6章  页面状态机制(视图状态和控件状态)         [阅读本章内容]这涉及到对控件生成周期的理解. 这两天会共享这五章内容, 请见:
    http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx