以前看到动态生成table的代码时,认为特别复杂,看到代码就不想看,认为这个用不到,而且还抱着一种难的心理.
不管则着,还是逃不过,躲避不是好的方法,这次就用到了动态生成表的要求,不学不行呀,不然页面达不到效果.
下面是我自己实现的一个实例
首先是在前台页面拖出一个html的table , 我们可以设定表头,也可不设定表头
这里我就自己设定表头了
- <html>
- <body>
- <formid="form1"runat="server">
- <tableidtableid="tblAutoTable"class="data-tablehistory"runat="server"style="width:68%;margin-bottom:0px;height:40px;margin:0;">
- <thead>
- <tr>
- <thalignthalign="left">文件名</th>
- <thalign="left">文件大小
- </th>
- <thalignthalign="left"><inputtype="checkbox"id="checkAll"name="checkAll"/>
- </th>
- </tr>
- </thead>
- <tbody>
- <!--这里是要进行拼接的表-->
- </tbody>
- </table>
- </form>
- </body>
- </html>
后台怎么设定,首先是获取查询到的数据(我是用Datatable获取查询到的数据的).
1后台循环dtatable中的行作为循环的次数.
2创建表的行
3创建表的列(可多列),给列赋值
4将列添加到表的行中
5将行添加到表中,进行循环,就得到一个表
下面是实例代码
- #region查询文件
- ///<summary>
- ///查询文件
- ///</summary>
- privatevoidQueryFile()
- {
- //创建Mongobd非结构化数据库连接
- MongoDatabasedb=getConn();
- //MongoGridFSfs=newMongoGridFS(db);//默认读取的集合表名是filse
- //设定查询的表名
- MongoGridFSSettingsfsSetting=newMongoGridFSSettings(){Root=fileTable};
- //初始化查询对象
- MongoGridFSfs=newMongoGridFS(db,fsSetting);
- //执行查询的方法
- MongoCursor<MongoGridFSFileInfo>docList=fs.FindAll();
- HtmlTableRowtrFirst=newHtmlTableRow();//tianjaiyihang
- HtmlTableCelltcTitle=newHtmlTableCell();
- tcTitle.InnerText="文件名";
- trFirst.Controls.Add(tcTitle);
- //tblAutoTable.Controls.Add(trFirst);
- foreach(MongoGridFSFileInfodocindocList)
- {
- UInt32length=Convert.ToUInt32(doc.Length);
- stringsize=null;
- if(length>1024*1024)
- size=((double)length/1024/1024).ToString("F2")+"MB";
- elseif(length>1024)
- size=((double)length/1024).ToString("F2")+"KB";
- else
- size=length.ToString()+"B";
- //动态拼接表
- HtmlTableRowtr=newHtmlTableRow();
- //添加文件名列
- HtmlTableCelltcCol=newHtmlTableCell();
- stringname=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);//将文件名列添加到行中
- //添加文件大小列
- HtmlTableCelltc=newHtmlTableCell();
- TextBoxtb=newTextBox();//创建文本框对象
- tb.Width=120;//设定宽度
- tb.Text=size;//设定文本框中的值
- tc.Controls.Add(tb);//单元格内容赋值
- tr.Controls.Add(tc);
- tblAutoTable.Controls.Add(tr);//将行添加到表中
- 添加删除选项
- //HtmlTableCelltcCheck=newHtmlTableCell();
- //CheckBoxtbcheck=newCheckBox();
- //tcCheck.Controls.Add(tbcheck);
- //tcCheck.Width="50";
- //tr.Controls.Add(tcCheck);
- }
- }
- #endregion
实例效果图如下
从代码的实例中可以看出,创建表格就是实例化对象,然后给对象赋值,它和先前的对象如出一辙的,并没有想象的那么难。
对比:
对于一个已经创建好的Dtatable,如何给Datatable循环添加行和列,于此类似,大家可以对比研究。