页面上有一个按钮,按一次就动态增加一个textbox控件,如何实现?
使用如下方法:
protected void Button1_Click(object sender, EventArgs e)
{
((Label)TableHead.FindControl("Label10")).Text = TableHead.Controls.Count.ToString();
rowCount = TableHead.Controls.Count;
string tr,tc1,tc2,tc3,tc4,tc5;
tr = "tr" + rowCount.ToString();
tc1 = "tc" + rowCount.ToString() +"1";
tc2 = "tc" + rowCount.ToString() +"2";
tc3 = "tc" + rowCount.ToString() +"3";
tc4 = "tc" + rowCount.ToString() +"4";
tc5 = "tc" + rowCount.ToString() +"5";
TableRow tr2 = new TableRow();
tr2.ID = tr;
TableCell tc11 = new TableCell();
tc11.ID = tc1;
TableCell tc21 = new TableCell();
tc21.ID = tc2;
TableCell tc31 = new TableCell();
tc31.ID = tc3;
TableCell tc41 = new TableCell();
tc41.ID = tc4;
TableCell tc51 = new TableCell();
tc51.ID = tc5;
TableHead.Controls.Add(tr2);
tr2.Controls.Add(tc11);
tr2.Controls.Add(tc21);
tr2.Controls.Add(tc31);
tr2.Controls.Add(tc41);
tr2.Controls.Add(tc51);
}
只能在首次按的时候添加了table的一行,再次按由于页面刷新,上次动态添加的无效了,所以无法实现连续的添加控件.如何解决这个问题?用别的方法也可以.
比如有一组文件要上传,我希望是开始显示3个上传栏,用户可以通过点按钮增加更多的上传栏.(一个实际需求的描述),当然我的问题不是这么简单,我简化成这样了,希望大家能明白,希望大家可以帮我解决,我搞了1天都没做出来啊,急啊~
只有90分了,上午散了200分,接分的去我的散分帖子,此90分全部给帮我解决此问题的人,先谢谢大家了.
使用如下方法:
protected void Button1_Click(object sender, EventArgs e)
{
((Label)TableHead.FindControl("Label10")).Text = TableHead.Controls.Count.ToString();
rowCount = TableHead.Controls.Count;
string tr,tc1,tc2,tc3,tc4,tc5;
tr = "tr" + rowCount.ToString();
tc1 = "tc" + rowCount.ToString() +"1";
tc2 = "tc" + rowCount.ToString() +"2";
tc3 = "tc" + rowCount.ToString() +"3";
tc4 = "tc" + rowCount.ToString() +"4";
tc5 = "tc" + rowCount.ToString() +"5";
TableRow tr2 = new TableRow();
tr2.ID = tr;
TableCell tc11 = new TableCell();
tc11.ID = tc1;
TableCell tc21 = new TableCell();
tc21.ID = tc2;
TableCell tc31 = new TableCell();
tc31.ID = tc3;
TableCell tc41 = new TableCell();
tc41.ID = tc4;
TableCell tc51 = new TableCell();
tc51.ID = tc5;
TableHead.Controls.Add(tr2);
tr2.Controls.Add(tc11);
tr2.Controls.Add(tc21);
tr2.Controls.Add(tc31);
tr2.Controls.Add(tc41);
tr2.Controls.Add(tc51);
}
只能在首次按的时候添加了table的一行,再次按由于页面刷新,上次动态添加的无效了,所以无法实现连续的添加控件.如何解决这个问题?用别的方法也可以.
比如有一组文件要上传,我希望是开始显示3个上传栏,用户可以通过点按钮增加更多的上传栏.(一个实际需求的描述),当然我的问题不是这么简单,我简化成这样了,希望大家能明白,希望大家可以帮我解决,我搞了1天都没做出来啊,急啊~
只有90分了,上午散了200分,接分的去我的散分帖子,此90分全部给帮我解决此问题的人,先谢谢大家了.
protected void Button1_Click(object sender, EventArgs e)
{
((Label)TableHead.FindControl("Label10")).Text = TableHead.Controls.Count.ToString();
int rowCount = i;
//rowCount = TableHead.Controls.Count;
string tr,tc1,tc2,tc3,tc4,tc5;
tr = "tr" + rowCount.ToString();
tc1 = "tc" + rowCount.ToString() +"1";
tc2 = "tc" + rowCount.ToString() +"2";
tc3 = "tc" + rowCount.ToString() +"3";
tc4 = "tc" + rowCount.ToString() +"4";
tc5 = "tc" + rowCount.ToString() +"5";
TableRow tr2 = new TableRow();
tr2.ID = tr;
TableCell tc11 = new TableCell();
tc11.ID = tc1;
TableCell tc21 = new TableCell();
tc21.ID = tc2;
TableCell tc31 = new TableCell();
tc31.ID = tc3;
TableCell tc41 = new TableCell();
tc41.ID = tc4;
TableCell tc51 = new TableCell();
tc51.ID = tc5;
TableHead.Controls.Add(tr2);
tr2.Controls.Add(tc11);
tr2.Controls.Add(tc21);
tr2.Controls.Add(tc31);
tr2.Controls.Add(tc41);
tr2.Controls.Add(tc51);
i++;
}我是这样的,我把i省了发上来的,不行啊,那个i不能记录行数.
把table的一行做成一个控件,然后每次Click Button的时候,增加一行,而不是一个个textbox增加!
post的时候就丢了
function addFile()
{
var filebutton = '<br><input type="text" size="50" name="File" class="ButtonCss" />';
document.getElementById('FileList').insertAdjacentHTML("beforeEnd",filebutton);
}
</script><tr style="line-height:2;">
<td style="width:155px" align="right">邮件附件:</td>
<td><input type="button" value="增加附件" class="ButtonCss" onclick="addFile()" />
</td>
</tr>
<tr style="line-height:2;">
<td style="width:155px" align="right"></td>
<td><p id="FileList"><input id="File1" type="text" runat="server" size="50" name="File" class="ButtonCss" /></p></td>
</tr>
------------------------
你说的很对阿,如何解决我这个问题呢?
-----------------------------------------
用js是可以添加,但是要用到动态添加的控件中的数据,postback的时候需要把所有的数据返回给服务器,这样似乎又回到了asp的时代阿。
================================
幕白兄已经回答过了,你可以用ViewState诸如此类的容器保存你上次的动态添加的控件和状态,回发以后重新创建
我也做过类型的邮件系统
后台对生对控件的读取代码,希望可以帮到LZ///添加邮件附件
HttpFileCollection fileList = HttpContext.Current.Request.Files;
for(int i = 0; i < fileList.Count; i++)
{ ///添加单个附件
HttpPostedFile file = fileList[i];
if(file.FileName.Length <= 0 || file.ContentLength <= 0)
{
break;
}
Attachment attachment = new Attachment(file.FileName);
mailMsg.Attachments.Add(attachment);
nContain += file.ContentLength;
}
{
this.addRow(Convert.ToInt32(Label1.Text) - 2);
}
protected void addRow(int row1)
{
for (int i = 2; i < row1+2; i++)
{
int rowCount = i;
TableRow tr2 = new TableRow();
tr2.ID = "tr" + rowCount.ToString();
TableCell tc11 = new TableCell();
tc11.ID = "tc" + rowCount.ToString() + "1";
TableCell tc21 = new TableCell();
tc21.ID = "tc" + rowCount.ToString() + "2";
TableCell tc31 = new TableCell();
tc31.ID = "tc" + rowCount.ToString() + "3";
TableCell tc41 = new TableCell();
tc41.ID = "tc" + rowCount.ToString() + "4";
TableCell tc51 = new TableCell();
tc51.ID = "tc" + rowCount.ToString() + "5";
TableHead.Controls.Add(tr2);
tr2.Controls.Add(tc11);
tr2.Controls.Add(tc21);
tr2.Controls.Add(tc31);
tr2.Controls.Add(tc41);
tr2.Controls.Add(tc51);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
((Label)TableHead.FindControl("Label10")).Text = TableHead.Controls.Count.ToString();
int rowCount = Convert.ToInt32(Label1.Text);
TableRow tr2 = new TableRow();
tr2.ID = "tr" + rowCount.ToString();
TableCell tc11 = new TableCell();
tc11.ID = "tc" + rowCount.ToString() + "1";
TableCell tc21 = new TableCell();
tc21.ID = "tc" + rowCount.ToString() + "2";
TableCell tc31 = new TableCell();
tc31.ID = "tc" + rowCount.ToString() + "3";
TableCell tc41 = new TableCell();
tc41.ID = "tc" + rowCount.ToString() + "4";
TableCell tc51 = new TableCell();
tc51.ID = "tc" + rowCount.ToString() + "5";
TableHead.Controls.Add(tr2);
tr2.Controls.Add(tc11);
tr2.Controls.Add(tc21);
tr2.Controls.Add(tc31);
tr2.Controls.Add(tc41);
tr2.Controls.Add(tc51);
rowCount = rowCount + 1;
Label1.Text = Convert.ToString((rowCount));
}OK,搞定了,把具体的实现代码发出来,结贴了。