我创建了动态表(在服务器端),cols是(irem,price,pic和textxbox), 当我尝试添加文本框时,我收到了消息控制' 0'类型' TextBox'必须放在带有runat = server 的表单标记内
这是代码(案例4是我创建文本框的地方):
protected void createTable()
{
int numberOfItems = mylist.Count;
// Create a new HtmlTable object.
HtmlTable table1 = new HtmlTable();
// Set the table's formatting-related properties.
table1.Border = 1;
table1.CellPadding = 1;
table1.CellSpacing = 1;
table1.BorderColor = "red";
// Start adding content to the table.
HtmlTableRow row;
HtmlTableCell cell;
for (int i = 0; i < numberOfItems; i++)
{
// Create a new row and set its background color.
row = new HtmlTableRow();
row.BgColor = "lightyellow";
row.Height = Convert.ToString(100);
name = mylist[i].Name;
price = mylist[i].Price;
image = mylist[i].ImagePath;
for (int j = 1; j <= 4; j++)
{
// Create a cell and set its text.
cell = new HtmlTableCell();
switch (j)
{
case 1:
cell.InnerHtml = name;
break;
case 2:
cell.InnerHtml = Convert.ToString(price);
break;
case 3:
cell.InnerHtml = image;
break;
case 4:
TextBox txt = new TextBox();
txt.ID = Convert.ToString(i);
txt.TextMode = TextBoxMode.SingleLine;
txt.Attributes.Add("runat", "server");
cell.Controls.Add(txt);
break;
default:
break;
}
// Add the cell to the current row.
row.Cells.Add(cell);
}
// Add the row to the table.
table1.Rows.Add(row);
}
// Add the table to the page.
this.Controls.Add(table1);
}
答案 0 :(得分:5)
关于您的问题,正如错误所述,所有包含runat=server
的控件都必须放在具有runat=server
标记的表单中。
在您的情况下,您使用以下行在页面中添加表格(其中包含服务器端Textbox
)作为 根元素 :< / p>
this.Controls.Add(table1);
相反,您应该将其添加为 <form></form>
标记内的元素。
这可以通过向您的主窗体添加id属性(例如,在您的aspx页面中<form runat="server" id="myForm">
然后使用this.Controls.Add()
而不是myForm.Controls.Add(table1);
来轻松完成:
div
或者,只需在您的aspx页面中的某个位置放置runat=server
<div id=myDiv runat=server />
(例如myDiv.Controls.Add(table1);
)并将表格添加到该div:
{{1}}