以前看到动态生成table的代码时,认为特别复杂,看到代码就不想看,认为这个用不到,而且还抱着一种难的心理.
不管则着,还是逃不过,躲避不是好的方法,这次就用到了动态生成表的要求,不学不行呀,不然页面达不到效果.
下面是我自己实现的一个实例
首先是在前台页面拖出一个html的table , 我们可以设定表头,也可不设定表头
这里我就自己设定表头了
<html>
<body>
<form id="form1"runat="server">
< tableid="tblAutoTable" class="data-table history"runat="server" style="width: 68%; margin-bottom: 0px; height:40px; margin: 0 ;" >
<thead>
<tr>
<thalign="left">文件名</th>
<th align="left">文件大小
</th>
<thalign="left"><input type="checkbox"id="checkAll" name="checkAll" />
</th>
</tr>
</thead>
<tbody >
<!--这里是要进行拼接的表-->
</tbody>
</table>
</form>
</body>
</html>
后台怎么设定,首先是获取查询到的数据(我是用Datatable获取查询到的数据的).
1后台循环dtatable中的行作为循环的次数.
2创建表的行
3创建表的列(可多列),给列赋值
4将列添加到表的行中
5将行添加到表中,进行循环,就得到一个表
下面是实例代码
#region 查询文件
/// <summary>
/// 查询文件
/// </summary>
private void QueryFile()
{
//创建Mongobd非结构化数据库连接
MongoDatabase db = getConn();
// MongoGridFS fs = newMongoGridFS(db); //默认读取的集合表名是filse
//设定查询的表名
MongoGridFSSettings fsSetting = newMongoGridFSSettings() { Root = fileTable };
//初始化查询对象
MongoGridFS fs = newMongoGridFS(db, fsSetting);
//执行查询的方法
MongoCursor<MongoGridFSFileInfo> docList = fs.FindAll();
HtmlTableRow trFirst = newHtmlTableRow();//tianjai yihang
HtmlTableCell tcTitle = newHtmlTableCell();
tcTitle.InnerText ="文件名";
trFirst.Controls.Add(tcTitle);
//tblAutoTable.Controls.Add(trFirst);
foreach (MongoGridFSFileInfo doc indocList)
{
UInt32 length =Convert.ToUInt32(doc.Length);
string size = null;
if (length > 1024 * 1024)
size = ((double)length /1024 / 1024).ToString("F2") + "MB";
else if (length > 1024)
size = ((double)length /1024).ToString("F2") + "KB";
else
size = length.ToString() +"B";
//动态拼接表
HtmlTableRow tr = newHtmlTableRow();
//添加文件名列
HtmlTableCell tcCol = newHtmlTableCell();
string name = doc.Name;//获取文件名
tcCol.Width ="300";//设定列的宽度
tcCol.InnerHtml = "<ahref='/Teacher/mongodb/FileManage.ashx?action=DOWNLOAD&value="+name+"'target='_blank'>"+name+"</a>";//文件名实现单机下载图片
//Response.Write(name);
tr.Controls.Add(tcCol);//将文件名列添加到行中
//添加文件大小列
HtmlTableCell tc = newHtmlTableCell();
TextBox tb = newTextBox();//创建文本框对象
tb.Width = 120;//设定宽度
tb.Text = size;//设定文本框中的值
tc.Controls.Add(tb);//单元格内容赋值
tr.Controls.Add(tc);
tblAutoTable.Controls.Add(tr);//将行添加到表中
添加删除选项
//HtmlTableCell tcCheck = newHtmlTableCell();
//CheckBox tbcheck = newCheckBox();
//tcCheck.Controls.Add(tbcheck);
//tcCheck.Width ="50";
//tr.Controls.Add(tcCheck);
}
}
#endregion
实例效果图如下
从代码的实例中可以看出,创建表格就是实例化对象,然后给对象赋值,它和先前的对象如出一辙的,并没有想象的那么难。
对比:
对于一个已经创建好的Dtatable,如何给Datatable循环添加行和列,于此类似,大家可以对比研究。