效果图:
代码:(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() * 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 = 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 = " ";
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()
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() * 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)
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()
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If Not Page.IsPostBack Then
GridView1.DataSource = CreateDataSource()
GridView1.DataBind()
End If
End Sub
Protected
Sub GridView1_RowDataBound()
Sub GridView1_RowDataBound(ByVal sender As Object, ByVal 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 = " "
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
>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)