打印

[asp.net教程] 自动填充固定行数的 gridview

自动填充固定行数的 gridview

在有些开发实践中,有时候为了页面美观的需要,需要将gridview填充成固定行数的表格,下面这个方法实现了这种填充的功能。此方法可以处理自动产生列和模版列。注意:由于时间关系,没有实现对完全空白数据的填充,呵呵,如果需要,可以自己添加哈:)!
   
  c#
   
  <%@ page language="c#"%>
   
  <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en"
   "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
   
  <script runat="server">
   // 计算数据,完全可以从数据看取得
   icollection createdatasourcebyxianhuimeng()
   {
   system.data.datatable dt = new system.data.datatable();
   system.data.datarow dr;
   dt.columns.add(new system.data.datacolumn("学生班级", typeof(system.string)));
   dt.columns.add(new system.data.datacolumn("学生姓名", typeof(system.string)));
   dt.columns.add(new system.data.datacolumn("语文", typeof(system.decimal)));
   dt.columns.add(new system.data.datacolumn("数学", typeof(system.decimal)));
   dt.columns.add(new system.data.datacolumn("英语", typeof(system.decimal)));
   dt.columns.add(new system.data.datacolumn("计算机", typeof(system.decimal)));
   
   for (int i = 0; i < 8; i++)
   {
   system.random rd = new system.random(environment.tickcount * i); ;
   dr = dt.newrow();
   dr[0] = "班级" + i.tostring();
   dr[1] = "【孟子e章】" + i.tostring();
   dr[2] = system.math.round(rd.nextdouble() * 100, 2);
   dr[3] = system.math.round(rd.nextdouble() * 100, 2);
   dr[4] = system.math.round(rd.nextdouble() * 100, 2);
   dr[5] = system.math.round(rd.nextdouble() * 100, 2);
   dt.rows.add(dr);
   }
   system.data.dataview dv = new system.data.dataview(dt);
   return dv;
   }
   
   // 设置每页显示的行数
   int totalrowcount = 12;
   // 自动填充的行数
   int numcount = 0;
   protected void page_load(object sender, eventargs e)
   {
   if (!page.ispostback)
   {
   gridview1.datasource = createdatasourcebyxianhuimeng();
   gridview1.databind();
   }
   }
   
   protected void gridview1_rowdatabound(object sender, gridviewroweventargs e)
   {
   if (e.row.rowtype == datacontrolrowtype.datarow)
   {
   // 计算自动填充的行数
   numcount++;
   }
   if (e.row.rowtype == datacontrolrowtype.footer)

   {
   // 计算完毕,在此添加缺少的行
   int toleft = totalrowcount - numcount;
   int numcols = gridview1.rows[0].cells.count;
   
   for (int i = 0; i < toleft; i++)
   {
   gridviewrow row = new gridviewrow(-1, -1, datacontrolrowtype.emptydatarow, datacontrolrowstate.normal);
   for (int j = 0; j < numcols; j++)
   {
   tablecell cell = new tablecell();
   cell.text = " ";
   row.cells.add(cell);
   }
   gridview1.controls[0].controls.addat(numcount + 1 + i, row);
   }
   }
   }
  </script>
   
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
   <title>自动填充固定行数的 gridview</title>
  </head>
  <body>
   <form id="form1" runat="server">
   <asp:gridview id="gridview1" runat="server" onrowdatabound="gridview1_rowdatabound"
   font-size="12px" cellpadding="3">
   <headerstyle backcolor="#ededed" />
   <columns>
   <asp:templatefield headertext="模版列">
   <itemtemplate>
   <%#eval("学生姓名") %>
   </itemtemplate>
   </asp:templatefield>
   </columns>
   </asp:gridview>
   </form>
  </body>
  </html>

TOP

返回顶部
AYBlue

Processed in 0.054100 second(s), 7 queries.

当前时区 GMT+8, 现在时间是 2009-1-10 11:25 京ICP备06054220号

清除 Cookies - 联系我们 - 163K.com - Archiver - WAP