asp.net在页面中动态生成表格

项目依然在调试,要总结的话总是感觉不太舒服,毕竟还没有完呢,所以现在想依次把这个系统中用到的一些比较麻烦的知识点记录到这,以便别人查阅(这可是偶千辛万苦从网上查资料整出来的哟。。。)

首先在页面上定义一个table控件,命名为autoTable。然后在某个事件中添加以下代码(我是在按钮点击事件,当然你可以在页面加载事件咯。。)

等会儿,我先说明几个概念,不然你会晕倒的。 clip_image001

一个表格是由n多个行组成的,即TableRow,而每一行又是由n多个单元组成的,也可以叫做单元格,即TableCell。

因此动态生成表格的基本算法呢就是首先不断的往每一个对象中添加单元格,这里要注意每次添加的都是一个新的单元格,new出来的TableCell,不然最后的结果是无论你循环多少次只是添加了一个格(TableCell)。然后呢就是将添加了TableCell的TableRow添加到autoTable中,这个和TableCell一样,也是每添加一个都要new出来一个。最后就得到一个动态的添加表格效果。

 

[code=C#]

 

//产生表格 TableRow tRow;//定义数据表行 TableCell tCell;//定义数据表格 Label lblTitle;//定义标题标签 Label lblChapter;//定义章节标签 TextBox txtValue;//定义用来输入分数的文本框 numRows = 3; numCells = 3; //首先是给定了几行几列, for (int iRow = 0; iRow <= numRows; iRow++) { tRow = new TableRow();//new出一个行来 for (int jCol = 0; jCol <= numCells; jCol++) { //判断如果是第一行则添加表头,表头为难度等级 if (iRow == 0) { //当为第一行时执行下列代码 if (jCol == 0) { //当为第一行第一列时 tCell = new TableCell(); //new出一个cell lblTitle = new Label(); //这是我自己用的一个lable,你可以参考 lblTitle.Text = "难度系数:"; //给label赋值 lblTitle.Width = 80; //设置宽度 tCell.Controls.Add(lblTitle); //添加label到cell中 tRow.Cells.Add(tCell); //添加Cell到TableRow中 } else { //如果不是第一列则: tCell = new TableCell(); lblTitle = new Label(); lblTitle.Text = jCol.ToString().Trim(); tCell.HorizontalAlign = HorizontalAlign.Center; tCell.Controls.Add(lblTitle); tRow.Cells.Add(tCell); } } else { //如果是第一列,则添加行标题。 if (jCol == 0) { tCell = new TableCell(); lblChapter = new Label(); lblChapter.Text = strChapter[iRow - 1].ToString() + ":"; lblChapter.Width = 80; tCell.Controls.Add(lblChapter); tCell.HorizontalAlign = HorizontalAlign.Center; tRow.Cells.Add(tCell); } else { //不是第一行第一列则添加内容 tCell = new TableCell(); txtValue = new TextBox(); txtValue.ID = "txt" + iRow.ToString() + jCol.ToString();//给控件设置id,因为我以后要用到这个控件。 txtValue.Text = "0"; txtValue.Text = txtValue.Text.Trim(); tCell.Controls.Add(txtValue); tRow.Cells.Add(tCell); } } } autoTable.Rows.Add(tRow);//添加TableRow }

 [/code]

 

 

看图:

 

asp.net在页面中动态生成表格_第1张图片

当然如果要想得到表格中的数据也是个麻烦的事,经过一番学习,最后使用了ajax,在vs2008中就是updatepanel。

不过你要还是有另外好的方法可以告诉我,先行感谢!

 

新博客

 

 

你可能感兴趣的:(Ajax,算法,C#,table,asp.net,textbox)