当前位置:编程学习 > C#/ASP.NET >>

asp.net Table问题

我使用asp.net的web控件Table,在后台动态增加行,可我每次添加都是把以前的行覆盖了,不能在后面直接添加,请问是什么原因呢?该如何解决? --------------------编程问答-------------------- 顶起来,很舒服! --------------------编程问答-------------------- TableRow tr = new TableRow();
//......
table.Rows.Add(tr); --------------------编程问答--------------------
引用 2 楼 dalmeeme 的回复:
TableRow tr = new TableRow();
//......
table.Rows.Add(tr);

+1
--------------------编程问答-------------------- 楼上的,我把我的代码贴出来你看看吧!


 /// <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;
        }
--------------------编程问答-------------------- 我是在页面加载时先增加4行,让后点击【新增】按钮再增加一行,但是增加了新行就把之前的几行全覆盖了,只剩最新的一行! --------------------编程问答-------------------- 你可以把开始的表格存入ViewState中 点击 新增时取出ViewState赋给新的表格实行添加行 --------------------编程问答--------------------
引用 6 楼 gj462375513 的回复:
你可以把开始的表格存入ViewState中 点击 新增时取出ViewState赋给新的表格实行添加行


请问应该怎么写呢?
是这样写么:
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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,