页面上有一个textbox文本框,输入数字后,点击增加按扭能在页面上增加一组控件,依次是textbox,textbox,checkbox,排成一行,就象是放在一个1行3列的table里面
eg:输入3后就就能增加3组textbox,textbox,checkbox
然后要在后台里面得到这组增加的值,并一组循环写入到数据库里面
eg:输入3后就就能增加3组textbox,textbox,checkbox
然后要在后台里面得到这组增加的值,并一组循环写入到数据库里面
我自己还做过使用DataList,通过按钮来生成一个空表然后绑定给dl,然后添加到数据库,这样的好处就是写添加数据的代码会容易一些,不需要一个一个控件的去找
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();
}
的Visible的属性是true,依次类推 ,叫控件显示出来不就行了
你说的虽然可以增加,但只能增加一个一维,而我这个是二维的
我需要的是一组一组的增加
那我们怎么判断哪是一组的呢
第二组: a2,b2,c2
这样难道会没办法放进数据库吗?
你能说的具体点吗??效果出来了分全给,马上
1.如果输入的内容提交后不需要回显到页面,那么建议使用JS来动态增加。在后台可以使用Request.Form["textbox1"]来分别取得相应的值。 这么做的好处是页面友好不闪屏。
2.有一种简单但低技术含量的办法,就是提前放上几行定义好的服务器控件放在那里,通过服务器端的Visible或者JS中的display来控制显示和隐藏。
3.使用DataGrid,DataList或Repeater来处理,需要加行时在后台创建空数据行绑定即可,这里要用到模板列。
4.使用服务器端的table来解决,就是<table id="t" runat="server">
的Visible的属性是true,依次类推 ,叫控件显示出来不就行了=============================
靠,这也行????-----
应该写代码,声称控件
然后通过事件 委托
得到值
使用datalist的话也可以生成你所说的二维的,觉得这个方法更好些
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分割下就可以了
{
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);
}
}
}
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,呵呵,这样可以让每组控件名都不一样