自动填充固定行数的 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>
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码视野

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

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

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

打赏作者

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

抵扣说明:

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

余额充值