asp.net Table问题
我使用asp.net的web控件Table,在后台动态增加行,可我每次添加都是把以前的行覆盖了,不能在后面直接添加,请问是什么原因呢?该如何解决? --------------------编程问答-------------------- 顶起来,很舒服! --------------------编程问答-------------------- TableRow tr = new TableRow();//......
table.Rows.Add(tr); --------------------编程问答--------------------
+1
--------------------编程问答-------------------- 楼上的,我把我的代码贴出来你看看吧!
--------------------编程问答-------------------- 我是在页面加载时先增加4行,让后点击【新增】按钮再增加一行,但是增加了新行就把之前的几行全覆盖了,只剩最新的一行! --------------------编程问答-------------------- 你可以把开始的表格存入ViewState中 点击 新增时取出ViewState赋给新的表格实行添加行 --------------------编程问答--------------------
/// <summary>
/// 加载Table(根据参数加载行数)
/// </summary>
/// <param name="iRow">需要加载的行数</param>
private void InitTable(int iRow, int iTable)
{
for (int i = 0; i < iRow; i++)
{
tr = new TableRow();
td = new TableCell();
td.ID = "ColId" + i + 1; //设置第一个单元格的ID
td.Text = (iTable + i).ToString(); //设置第一个单元格文本
td.Width = Unit.Pixel(60);
tr.Cells.Add(td);
//设置第二个单元格的ID和单元格文本 提交时间
td=new TableCell();
td.ID = "ColDate" + i + 1;
td.Text = DateTime.Now.ToString("yyyy-MM-dd");
td.Width = Unit.Point(120);
tr.Cells.Add(td);
//设置第三个单元格的ID和单元格文本 提交人
td = new TableCell();
td.ID = "ColAuthor" + i + 1;
TextBox txtAuthor = new TextBox();
txtAuthor.Width = Unit.Pixel(120);
txtAuthor.ID = "txtAuthor" + i.ToString();
td.Controls.Add(txtAuthor);
td.Width = Unit.Point(120);
tr.Cells.Add(td);
//设置第四个单元格的ID和单元格文本 金额
td = new TableCell();
td.ID = "ColMoney" + i + 1;
TextBox txtMoney = new TextBox();
txtMoney.ID = "txtMoney" + i.ToString();
txtMoney.Width = Unit.Pixel(100);
td.Controls.Add(txtMoney);
td.Width = Unit.Point(100);
tr.Cells.Add(td);
//设置第五个单元格的ID和单元格文本 审核依据
td = new TableCell();
td.ID = "ColPayment" + i + 1;
TextBox txtPayment = new TextBox();
txtPayment.ID = "txtPayment" + i.ToString();
txtPayment.Width = Unit.Pixel(200);
td.Controls.Add(txtPayment);
td.Width = Unit.Point(200);
tr.Cells.Add(td);
Table1.Rows.Add(tr);
}
iRow = Table1.Rows.Count;
}
请问应该怎么写呢?
是这样写么:
ViewState["table"] = Table1;
我这样写报错了啊,如下:
程序集“System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中的类型“System.Web.UI.WebControls.Table”未标记为可序列化。 --------------------编程问答-------------------- tr、td不能用成员变量,要用局部变量。 --------------------编程问答-------------------- --------------------编程问答-------------------- 大家好,我还是那个问题Table添加新行,我把所有的代码都贴出来
protected void Page_Load(object sender, EventArgs e)
{
int iTable = Table1.Rows.Count;
if (!IsPostBack)
{
ViewState["iRow"] = Table1.Rows.Count;
}
else
{
// InitTable(4, iTable);
//ViewState["iRow"] = Table1.Rows.Count;
ViewState["iRow"] = Table1.Rows.Count;
}
}
/// <summary>
/// 加载Table(根据参数加载行数)
/// </summary>
/// <param name="iRow">需要加载的行数</param>
private void InitTable(int iRow, int iTable)
{
TableRow tr; TableCell td;
for (int i = 0; i < iRow; i++)
{
tr = new TableRow();
td = new TableCell();
td.ID = "ColId" + i + 1; //设置第一个单元格的ID
td.Text = (iTable + i).ToString(); //设置第一个单元格文本
td.Width = Unit.Pixel(60);
tr.Cells.Add(td);
//设置第二个单元格的ID和单元格文本 提交时间
td=new TableCell();
td.ID = "ColDate" + i + 1;
td.Text = DateTime.Now.ToString("yyyy-MM-dd");
td.Width = Unit.Point(120);
tr.Cells.Add(td);
//设置第三个单元格的ID和单元格文本 提交人
td = new TableCell();
td.ID = "ColAuthor" + i + 1;
TextBox txtAuthor = new TextBox();
txtAuthor.Width = Unit.Pixel(120);
txtAuthor.ID = "txtAuthor" + i.ToString();
td.Controls.Add(txtAuthor);
td.Width = Unit.Point(120);
tr.Cells.Add(td);
//设置第四个单元格的ID和单元格文本 金额
td = new TableCell();
td.ID = "ColMoney" + i + 1;
TextBox txtMoney = new TextBox();
txtMoney.ID = "txtMoney" + i.ToString();
txtMoney.Width = Unit.Pixel(100);
td.Controls.Add(txtMoney);
td.Width = Unit.Point(100);
tr.Cells.Add(td);
//设置第五个单元格的ID和单元格文本 审核依据
td = new TableCell();
td.ID = "ColPayment" + i + 1;
TextBox txtPayment = new TextBox();
txtPayment.ID = "txtPayment" + i.ToString();
txtPayment.Width = Unit.Pixel(200);
td.Controls.Add(txtPayment);
td.Width = Unit.Point(200);
tr.Cells.Add(td);
Table1.Rows.Add(tr);
}
iRow = Table1.Rows.Count;
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAdd_Click(object sender, EventArgs e)
{
int irow = Convert.ToInt32(ViewState["iRow"]);
irow = Table1.Rows.Count; InitTable(1, irow);
}
我在button的事件里执行添加新行,但是只能添加一次,我在调试的时候发现,第一次完成了,但是table.rows.count 的值还是没变,所以导致第二次添加不成功。请问这是什么原因呢?为什么table1.rows.count的值没有改变呢?
补充:.NET技术 , ASP.NET