自动填充固定行数的 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 CreateDataSource()
  
{
    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=  i.ToString();
      dr[
2= System.Math.Round(rd.NextDouble() * 1002);
      dr[
3= System.Math.Round(rd.NextDouble() * 1002);
      dr[
4= System.Math.Round(rd.NextDouble() * 1002);
      dr[
5= System.Math.Round(rd.NextDouble() * 1002);
      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 
= CreateDataSource();
      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 id = " Head1 "  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 >
 

vb.net

 

< %@ Page Language = " vb " % >

< !DOCTYPE html  PUBLIC   " -//W3C//DTD XHTML 1.0 Transitional//EN "
 
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >

< script runat = " server " >
    
'  计算数据,这里可以适当修改从数据库中获取
     Private   Function CreateDataSource() As System.Data.DataView
        
Dim dt As System.Data.DataTable = New System.Data.DataTable
        
Dim dr As System.Data.DataRow
        
Dim i As Integer
        dt.Columns.Add(
New System.Data.DataColumn("学生班级"GetType(String)))
        dt.Columns.Add(
New System.Data.DataColumn("学生姓名"GetType(String)))
        dt.Columns.Add(
New System.Data.DataColumn("语文"GetType(String)))
        dt.Columns.Add(
New System.Data.DataColumn("数学"GetType(String)))
        dt.Columns.Add(
New System.Data.DataColumn("英语"GetType(String)))
        dt.Columns.Add(
New System.Data.DataColumn("计算机"GetType(String)))
        
For i = 0 To 8
            
Dim rd As New System.Random(Environment.TickCount * i)
            dr 
= dt.NewRow
            dr(
0= "班级" + i.ToString()
            dr(
1= i.ToString()
            dr(
2= System.Math.Round(rd.NextDouble() * 1002)
            dr(
3= System.Math.Round(rd.NextDouble() * 1002)
            dr(
4= System.Math.Round(rd.NextDouble() * 1002)
            dr(
5= System.Math.Round(rd.NextDouble() * 1002)
            dt.Rows.Add(dr)
        
Next
        
Dim dv As System.Data.DataView = New System.Data.DataView(dt)
        
Return dv
    
End Function


    
'  设置每页显示的行数  
     Dim  TotalRowCount  As   Integer   =   12
    
'  自动填充的行数
     Dim  numCount  As   Integer   =   0
    
Protected   Sub Page_Load(ByVal sender As ObjectByVal e As EventArgs)
        
If Not Page.IsPostBack Then
            GridView1.DataSource 
= CreateDataSource()
            GridView1.DataBind()
        
End If
    
End Sub


    
Protected   Sub GridView1_RowDataBound(ByVal sender As ObjectByVal e As GridViewRowEventArgs)
        
If (e.Row.RowType = DataControlRowType.DataRow) Then
            numCount 
= numCount + 1
        
End If
        
If (e.Row.RowType = DataControlRowType.Footer) Then
            
Dim toLeft As Integer = TotalRowCount - numCount
            
Dim numCols As Integer = GridView1.Rows(0).Cells.Count
            
Dim i, j As Integer
            
For i = 0 To toLeft
                
Dim row As GridViewRow = New GridViewRow(-1-1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal)
                
For j = 0 To numCols
                    
Dim cell As New TableCell
                    cell.Text 
= "&nbsp;"
                
Next
                GridView1.Controls(
0).Controls.AddAt(numCount + 1 + i, row)
            
Next
        
End If
    
End Sub

</ script >

< html xmlns = " http://www.w3.org/1999/xhtml " >
< head id = " Head1 "  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 >
 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码视野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值