如何从服务器端向表格中添加行?
if (!Page.IsPostBack)
{
Session["table"] = TableId;
}
else
{
TableId = (Table)Session["table"];
}
protected void btnAddinRow_Click(object sender, EventArgs e)
{
num_row = (TableId.Rows).Count;
TableRow r = new TableRow();
TableCell c1 = new TableCell();
TableCell c2 = new TableCell();
TextBox t = new TextBox();
t.ID = "textID" + num_row;
t.EnableViewState = true;
r.ID = "newRow" + num_row;
c1.ID = "newC1" + num_row;
c2.ID = "newC2" + num_row;
c1.Text = "New Cell - " + num_row;
c2.Controls.Add(t);
r.Cells.Add(c1);
r.Cells.Add(c2);
TableId.Rows.Add(r);
Session["table"] = TableId;
}
在调试中我发现了“TableID”中的数字,但是没有绘制行。
你对这个问题有什么想法吗?谢谢
我认为您对动态控件感到困惑...如果您正在动态创建表中的每一行...您需要在每个页面周期中创建它(具有相同的名称)..是否回发还是不……
简单来说,如果您要创建不在 .aspx(标记)页面中的内容,请在您的代码中...在每次回发时执行此操作...
在您的代码中,您正在从 Session 中检索表,但您没有将它再次添加到表单中……下面的行就是这样做的。
this.form1.Controls.Add(TableId);
这是一个工作代码,针对您的问题...希望这对您有所帮助。让我知道,如果您有任何问题...您也可以尝试使用 DataGrid 对象数据源...这将帮助您在回发时保留数据,而无需将其写入数据库。
Table TableId = new Table();
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
TableId.ID = "MyTable";
}
else
{
TableId = (Table)Session["table"];
this.form1.Controls.Add(TableId);
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
Session["table"] = TableId;
}
protected void btnAddinRow_Click(object sender, EventArgs e)
{
int num_row = (TableId.Rows).Count;
TableRow r = new TableRow();
TableCell c1 = new TableCell();
TableCell c2 = new TableCell();
TextBox t = new TextBox();
t.ID = "textID" + num_row;
t.EnableViewState = true;
r.ID = "newRow" + num_row;
c1.ID = "newC1" + num_row;
c2.ID = "newC2" + num_row;
c1.Text = "New Cell - " + num_row;
c2.Controls.Add(t);
r.Cells.Add(c1);
r.Cells.Add(c2);
TableId.Rows.Add(r);
Session["table"] = TableId;
}
我是一名优秀的程序员,十分优秀!