设为首页
加入收藏
站内地图
旧版入口
当前位置:首页 > 站长学院 > 网络编程 > ASP.NET

自动填充固定行数的 GridView

作者:佚名 出处:网络转载 时间:11-26 点击:

内容载入中...
     在有些开发实践中,有时候为了页面美观的需要,需要将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>
  
    。

收藏本文:
】【打印页面】【推荐给朋友】【关闭窗口

站长学院

推荐信息