页面上有一个textbox文本框,输入数字后,点击增加按扭能在页面上增加一组控件,依次是textbox,textbox,checkbox,排成一行,就象是放在一个1行3列的table里面
eg:输入3后就就能增加3组textbox,textbox,checkbox
然后要在后台里面得到这组增加的值,并一组循环写入到数据库里面

解决方案 »

  1.   

    思路:可以动态的建table和控件,然后把数据添加到数据库;
    我自己还做过使用DataList,通过按钮来生成一个空表然后绑定给dl,然后添加到数据库,这样的好处就是写添加数据的代码会容易一些,不需要一个一个控件的去找
      

  2.   

    //生成按钮:根据指标数量动态生成
        protected void ibtnType_Click(object sender, ImageClickEventArgs e)
        {
            this.Panel3.Visible = true;
            DataSet ds = new DataSet();
            ds.Tables.Add();
            ds.Tables[0].Columns.Add("QuestName");
            ds.Tables[0].Columns.Add("QuestID");
            ds.Tables[0].Columns.Add("SortID");
            string [] row = {"","",""};
            int Num = int.Parse(this.txtQuestNum.Text);
            for (int i = 0; i < Num; i++)
            {
                ds.Tables[0].Rows.Add(row);
            }
            this.dlQuest.DataSource = ds;
            this.dlQuest.DataBind();
        }
      

  3.   

    我想到的办法是用JS画控件,动态增加,控件名字可以是 textbox<% =i %> 这样的写法,那么这一组控件名都会有个统一点,就是最后都是<% =i %>,最后可以把i值放到隐藏域中,在后台操作时候,取隐藏域i的值,一个for循环就可以把所有数据按i 分组插入数据库了。
      

  4.   

    先把控件添加到页面。然后用他们的Visible属性隐藏起来。当点击button是先判断第一个控件
    的Visible的属性是true,依次类推 ,叫控件显示出来不就行了
      

  5.   

    to:hy_lihuan()
    你说的虽然可以增加,但只能增加一个一维,而我这个是二维的
      

  6.   

    放到一个容器里面  然后用Controls去遍历所有的新增控件
      

  7.   

    to:Red_angelX(八戒)
    我需要的是一组一组的增加
    那我们怎么判断哪是一组的呢
      

  8.   

    第一组控件名:a1,b1,c1
    第二组:      a2,b2,c2
    这样难道会没办法放进数据库吗?
      

  9.   

    to:maple0112() 
    你能说的具体点吗??效果出来了分全给,马上
      

  10.   

    对于LZ的需求个人认为不一定大家非要用服务器控件
    1.如果输入的内容提交后不需要回显到页面,那么建议使用JS来动态增加。在后台可以使用Request.Form["textbox1"]来分别取得相应的值。 这么做的好处是页面友好不闪屏。
    2.有一种简单但低技术含量的办法,就是提前放上几行定义好的服务器控件放在那里,通过服务器端的Visible或者JS中的display来控制显示和隐藏。
    3.使用DataGrid,DataList或Repeater来处理,需要加行时在后台创建空数据行绑定即可,这里要用到模板列。
    4.使用服务器端的table来解决,就是<table id="t" runat="server">
      

  11.   

    先把控件添加到页面。然后用他们的Visible属性隐藏起来。当点击button是先判断第一个控件
    的Visible的属性是true,依次类推 ,叫控件显示出来不就行了=============================
    靠,这也行????-----
    应该写代码,声称控件
    然后通过事件 委托
    得到值
      

  12.   

    刚刚我在最前面已经回复了,用JS画控件的方法,一次画一组应该没问题吧,然后每个控件的名字就是用a1,b1,c1 a2,b2,c2这样有规律的命名。既然是动态画控件,所以数量肯定是不定的,把总共画的控件的数量放进一个隐藏域中。在后台取到隐藏域的值,比如是10,那就一个for循环,把a1,b1,c1~a10,b10,c10全部值都可以依次取到,放进数据库
      

  13.   

    我一向是动态生成html控件,再在后台用request.form来获取.
      

  14.   

    同意hy_lihuan() 的方法
    使用datalist的话也可以生成你所说的二维的,觉得这个方法更好些
      

  15.   

    <script language="JavaScript">
        function addFile()
        {
         var str = '<INPUT type="text" size="50" NAME="file1"><INPUT type="text" size="50" NAME="file2"><br>'
         document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
        }
    </script>
    <P id="MyFile"></P>
    <INPUT onclick="addFile()" type="button" value="增加附件...">
    ==================================================
    maple0112()所说的方法
    JS增加HTML控件,后台使用request获得,但获得以后的值由于控件name相同,所以是一串以逗号分割的字符串,你用splite分割下就可以了
      

  16.   

    function createRow(rows)
        {
          document.getElementById('tbxPrimeNum').value=rows;
          tb3 = document.getElementById('tb3');      
          oldRow = tb3.childNodes[0].childNodes.length;
         if(rows>oldRow)
         {
            for(i=oldRow;i<rows;i++)
            {
                newRow = tb3.insertRow();
                newCell = newRow.insertCell();
                newCell.align="left";
                newCell.innerHTML ="<input type='text' name='ProjectName" + i + "' style='width: 200px' class='UnderlineTextBoxLight' />";
                
                 newCell = newRow.insertCell();
                 newCell.align="left";
                newCell.innerHTML ="<input type='text' onkeypress='return valNumDot()' name='ContractAmount" + i + "' style='width:150px' class='UnderlineTextBoxLight' />";
                
                newCell = newRow.insertCell();
                 newCell.align="left";
                newCell.innerHTML ="<input type='text' name='WageDecisionNumber" + i + "' style='width: 150px' class='UnderlineTextBoxLight' />";
                
                newCell = newRow.insertCell();
                newCell.align="left";
                newCell.innerHTML ="<input type='text' onkeypress='return valDate()' onclick='display(this)' id='WageLockDate" + i +"' name='WageLockDate" + i + "' style='width: 150px' class='UnderlineTextBoxLight' />";            
               
            }
         }
         else
         {
             for(i=oldRow-1;i>=rows;i--)
             {
                tb3.deleteRow(i);
             }
         }
        }
      

  17.   

    <script language="JavaScript">
        function addFile()
        {
         var str = '<INPUT type="text" size="50" NAME="file1"><INPUT type="text" size="50" NAME="file2"><br>'
         document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
        }
    </script>
    <P id="MyFile"></P>
    <INPUT onclick="addFile()" type="button" value="增加附件...">
    ==================================================
    maple0112()所说的方法
    JS增加HTML控件,后台使用request获得,但获得以后的值由于控件name相同,所以是一串以逗号分割的字符串,你用splite分割下就可以了
    ========================================================
    呵呵,谢谢这位兄台,上班中就没时间写段代码上来了,其实也差不多,在这个函数里加个参数试试addFile(i)
    然后把要画的控件名就叫 'file'+i,呵呵,这样可以让每组控件名都不一样
      

  18.   

    动态增加控件,控件的ID按照规则生成,然后再按照规则findcontrol就可以了