int tableRows = rows; //接收用户设置行数
int tableCells = 3; //3列
int tbId = 1; //由于一行有多个Textbox,要设置每个TextBox的ID唯一性。
for (int i = 1; i <= tableRows; i++)
{
int p = i - 1;//设定数据记录的第一行起始位 //ds.Tables["bumen"].Rows[i]["bumen"].ToString().Trim();
TableRow tableRow = new TableRow();
for (int j = 1; j <= tableCells; j++)
{
switch (j)
{
case 1: //第一列
TableCell tableCell1 = new TableCell();
tableCell1.BorderWidth = Unit.Pixel(1);
Label lb1 = new Label();
// FileUpload fileUpload = new FileUpload();
lb1.ClientIDMode = ClientIDMode.Static;
lb1.ID = p.ToString();
lb1.Text = i.ToString();
lb1.Attributes.Add("runat ", "server ");
tableCell1.Controls.Add(lb1);
tableRow.Cells.Add(tableCell1);
break;
case 2: //第二列
TableCell tableCell2 = new TableCell();
tableCell2.BorderWidth = Unit.Pixel(1);
Label lb2 = new Label();
lb2.ClientIDMode = ClientIDMode.Static;
lb2.ID ="B"+p.ToString();
lb2.Text = ds1.Tables["zxj"].Rows[p]["XM"].ToString();
tableCell2.Controls.Add(lb2);
tableRow.Cells.Add(tableCell2);
break;
case 3: //第三列
TableCell tableCell3 = new TableCell();
tableCell3.BorderWidth = Unit.Pixel(1);
TextBox textBox3 = new TextBox();
textBox3.ClientIDMode = ClientIDMode.Static;
textBox3.ID = "C" + p.ToString();
textBox3.Width = 10;
tbId = tbId + 1;
tableCell3.Controls.Add(textBox3);
tableRow.Cells.Add(tableCell3);
break;
}
}
TableUploadlayout.Rows.Add(tableRow);
}以上为生成控件代码。我是想根据数据库记录条数生成控件,然后在控件中录入数据后存入数据库中,问题是怎样才能取到生成控件:A0、A1... 和C0、C1的值呢?试了很多方法,如:启用页面的viewstate、用((Label)this.Page.FindControl("A" + i.ToString())).Text取值、用Request.Form["A" + i.ToString()].ToString()取什都没有实现,请帮助。控件
int tableCells = 3; //3列
int tbId = 1; //由于一行有多个Textbox,要设置每个TextBox的ID唯一性。
for (int i = 1; i <= tableRows; i++)
{
int p = i - 1;//设定数据记录的第一行起始位 //ds.Tables["bumen"].Rows[i]["bumen"].ToString().Trim();
TableRow tableRow = new TableRow();
for (int j = 1; j <= tableCells; j++)
{
switch (j)
{
case 1: //第一列
TableCell tableCell1 = new TableCell();
tableCell1.BorderWidth = Unit.Pixel(1);
Label lb1 = new Label();
// FileUpload fileUpload = new FileUpload();
lb1.ClientIDMode = ClientIDMode.Static;
lb1.ID = p.ToString();
lb1.Text = i.ToString();
lb1.Attributes.Add("runat ", "server ");
tableCell1.Controls.Add(lb1);
tableRow.Cells.Add(tableCell1);
break;
case 2: //第二列
TableCell tableCell2 = new TableCell();
tableCell2.BorderWidth = Unit.Pixel(1);
Label lb2 = new Label();
lb2.ClientIDMode = ClientIDMode.Static;
lb2.ID ="B"+p.ToString();
lb2.Text = ds1.Tables["zxj"].Rows[p]["XM"].ToString();
tableCell2.Controls.Add(lb2);
tableRow.Cells.Add(tableCell2);
break;
case 3: //第三列
TableCell tableCell3 = new TableCell();
tableCell3.BorderWidth = Unit.Pixel(1);
TextBox textBox3 = new TextBox();
textBox3.ClientIDMode = ClientIDMode.Static;
textBox3.ID = "C" + p.ToString();
textBox3.Width = 10;
tbId = tbId + 1;
tableCell3.Controls.Add(textBox3);
tableRow.Cells.Add(tableCell3);
break;
}
}
TableUploadlayout.Rows.Add(tableRow);
}以上为生成控件代码。我是想根据数据库记录条数生成控件,然后在控件中录入数据后存入数据库中,问题是怎样才能取到生成控件:A0、A1... 和C0、C1的值呢?试了很多方法,如:启用页面的viewstate、用((Label)this.Page.FindControl("A" + i.ToString())).Text取值、用Request.Form["A" + i.ToString()].ToString()取什都没有实现,请帮助。控件
解决方案 »
- [難題]web service[Only one usage of each socket address (protocol/network address
- 我在https网页中加载了mapbar,会报安全警告,请问有什么方式,可以解决这个问题?
- 那个下载是怎么实现的?
- 请问如何在visual web dep里面调用web.config中的数据库连接
- 奇了怪了,为什么分页不能点呢?(VB.NET)
- 急!!关于Oracle NCLOB类型为空时报错
- 请问一下数据库中的关系图的用处是什么啊
- 当我按IE工作栏上的后退按钮后,使前一个页面不显示,如何进行控制
- 为什么就没人告诉我引用了system.management以后在 .cs中就无法使用呢?
- 解迷
- asp.net如何实现伪静态?(URLRewriter)
- 求高手解释这个导航是怎么实现的?
1 在 OnLoad 中,无论是首次加载还是用回发的方式打开页面,都需要调用上述动态生成控件的代码,并且把动态后成的控件放到数组中去。
2 在某个服务端控件事件(如按钮的点击事件)中,访问第一步中生成控件的值,用户输入的值应该已经在其中了。
http://bbs.csdn.net/topics/380169102
http://bbs.csdn.net/topics/390510321?page=1#post-394969349
lb1.Text = i.ToString();
lb1.Attributes.Add("runat ", "server ");
这两行代码,这在第一次加载动态控件时有用的,但是在回发时就根本是多余的。因为asp.net只要找到相同结构位置相同ID号的控件,就会自动把上一次输出html时保存的状态数据回填给它,而你赋值的结果会被asp.net覆盖。另外,给客户端html element设置runat属性也是没有作用的,因为浏览器上又不执行asp.net。如果你知识浅尝辄止,那么不要再考虑“动态生成控件”这个课题,使用DataList等等现成的数据绑定控件来处理。如果你要学习,那么你现在的知识(你的代码中的几个概念错误表现出来的你对asp.net的理解)不足以去学习这个机制,可能需要在学习一年以后再开始学习控件开发知识,或者需要有人面对面地给你指导才行。