在有些开发实践中,有时候为了页面美观的需要,需要将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 = "&nbsp;";
          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>

转载于:https://www.cnblogs.com/zpylh/articles/1033409.html

自动填充固定行数的 GridView (转)相关推荐

  1. ReportViewer单据票据打印,自动分页,每页显示固定行数,每页都显示表头

    报表工具用来用去,其实还是微软自带的ReportViewer比较轻量好用,一般需求完全够用.只是由于不常用,总会有解决一个问题过段时间又忘了怎么解决的问题.索性整理一下,当作笔记了. 在票据打印的时候 ...

  2. Excel按照固定行数拆分为多个文件

    工作需要,需要把Excel按照固定行数拆分,生成多个Excel. 1.打开Excel,鼠标不要任何选择.按"Alt"+"f11". 在sheet1贴上以下代码, ...

  3. 打印倒三角形——固定行数与键盘输入行数

    打印倒三角形 一.固定行数-5行 思路:将整个三角形分成三部分,图中已分别用1.2.3标明.代码中要使用3个for循环,第一个for循环打印内容以"空格"形式展示,即左边的直角三角 ...

  4. excel按照固定行数拆分多个

    1 背景: 工作需要,需要把Excel按照固定行数拆分. 解决办法: 1. 生成是提前处理: 简单来说就是按照行数生成多个Excel. 大概逻辑如下: if(list.size< limit) ...

  5. Java实现矩阵运算——矩阵乘法、矩阵转置、自动填充矩阵行

    在做大数据或人工智能开发的过程做难免会遇到矩阵运算,本文在这里给大家实现一个简单的矩阵运算,请看下代码: package test;/*** 矩阵运算* * @author Administrator ...

  6. excel中自动填充很多行

    当在EXCEL中有多行需要自动填充时,例如从B1-B5000填充公式=(A1-15)/1000, 可以先选择B1,即填充内容,Ctrl+C: 然后,选择B2,将表格拉至B5000位置,按住shift键 ...

  7. Android TextView,EditText要求固定行数自动调整TextSize

    最近项目有个需求要求文本最多显示3行,继续输入则字体变小,删除已经输入的文字,那么字体变大,不管变大变小都不能超过3行.网上怎么找也找不到相关的解决方案,自己动手,丰衣足食了! 说一下算法思路,后面给 ...

  8. 在 GitLab 中自动统计代码行数

    在 GitLab 中,你可以在项目的 "Settings" 页面中找到 "Repository statistics" 选项.点击 "Reposito ...

  9. oracle列转行 空行,Oracle 行转列(不固定行数的行转列,动态)(转)

    SQLSERVER :行列转换例子:  http://www.cnblogs.com/gaizai/p/3753296.html#_labelFour 1. Oracle 11g之后新增了行列转换的函 ...

  10. FastReport报表固定行不足补空行且每页小计最后一页合计

    1.报表设计器内添加一个页首PageHeader,用于添加报表的表头: 2.在页首区域添加几个带边框的Memo,把每个Memo靠在一起形成报表表头: 3.添加一个栏首: 4.添加一个主数据Master ...

最新文章

  1. LLVM与Clang局部架构与语法分析
  2. 干掉SQL中的like,我用es后运营小姐姐们都说好快!
  3. WPF Dispatcher介绍
  4. 分享2018年陆陆续续读过的书-附书单
  5. php mysql读取数组_php实现通用的从数据库表读取数据到数组的函数实例
  6. abp vnext2.0之核心组件模块加载系统源码解析
  7. php 秒杀并发怎么做,PHP实现高并发下的秒杀功能–Laravel
  8. JS数组的需要注意的问题
  9. 织梦DeDeCMS友情链接文字显示不全
  10. 【Tomcat】Tomcat下设置项目为默认项目
  11. 《读编程珠玑有感》——细节处见技术
  12. java实现打印菱形(任意输入数字打印任意阶菱形)
  13. 安卓开发 JAVA环境配置
  14. BigGAN(2019)
  15. chronodex怎么用_滴答清单使用全攻略:如何把手帐搬到滴答清单上,提升效率?...
  16. python四级是什么水平_四级能过的水平大概什么水平?
  17. 微信小程序wx.getUserInfo获取用户所在地区将拼音转换为中文的方法
  18. 2019计算机考研各科目时间安排,2019考研时间安排
  19. Unraid安装Transmission 超简单(2022/10/21)
  20. 数说“德尔塔”病毒,数据分析展示变异新冠毒株的传播情况

热门文章

  1. JQuery时间轴timeline插件的学习-Lateral On-Scroll Sliding with jQuery+technotarek / timeliner
  2. python全栈_010_Python3基本数据类型--元组
  3. 从环境搭建探讨做事的方法
  4. action属性注入为null
  5. [Android] Android开机启动Activity或者Service方法
  6. 把DamnSmallLinux(DSL)安装到硬盘(虚拟机)并安装GCC
  7. 解决在DHCP环境下私自指定IP和私自搭建DHCP服务器的方法
  8. FLStudio20.8中文版水果萝卜编曲 新增中文语言
  9. ImageView的属性android:scaleType作用
  10. 腾讯二面:引入RabbitMQ后,你如何保证全链路数据100%不丢失 ?