自动填充固定行数的 GridView

2024-03-07 09:18

本文主要是介绍自动填充固定行数的 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 
=   " &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 >
 

这篇关于自动填充固定行数的 GridView的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783050

相关文章

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

SpringBoot自定义注解如何解决公共字段填充问题

《SpringBoot自定义注解如何解决公共字段填充问题》本文介绍了在系统开发中,如何使用AOP切面编程实现公共字段自动填充的功能,从而简化代码,通过自定义注解和切面类,可以统一处理创建时间和修改时间... 目录1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安