通过设置 PagerTemplate 属性实现自定义分页。此方法对于GridView和Detailview同样适用。
数据分页模板
如果将 FormView 控件的 AllowPaging 属性设置为 true,则 FormView 控件可自动添加用于分页的用户界面 (UI) 控件。可以通过添加 PagerTemplate 模板来自定义用于分页的用户界面。若要指定执行哪个分页操作,请向此模板添加一个 Button 控件,然后将其 CommandName 属性设置为 Page,并将其 CommandArgument 属性设置为下列值之一:
-
First 定位到第一页。
-
Last 定位到最后一页。
-
Prev 定位到上一页。
-
Next 定位到下一页数据
-
一个数字 指示特定的页。
示例代码:
<
asp:FormView
ID
="FormView1"
runat
="server"
DataKeyNames
="OrderNo"
DataSourceID
="SqlDataSource1"
Style ="position: static" AllowPaging ="true" >
< EditItemTemplate >
OrderNo:
< asp:Label ID ="OrderNoLabel1" runat ="server" Text ='<%# Eval("OrderNo") % > '> </ asp:Label >< br />
CustID:
< asp:TextBox ID ="CustIDTextBox" runat ="server" Text ='<%# Bind("CustID") % > '>
</ asp:TextBox >< br />
ContactMan:
< asp:TextBox ID ="ContactManTextBox" runat ="server" Text ='<%# Bind("ContactMan") % > '>
</ asp:TextBox >< br />
Tel:
< asp:TextBox ID ="TelTextBox" runat ="server" Text ='<%# Bind("Tel") % > '>
</ asp:TextBox >< br />
InDate:
< asp:TextBox ID ="InDateTextBox" runat ="server" Text ='<%# Bind("InDate") % > '>
</ asp:TextBox >< br />
< asp:LinkButton ID ="UpdateButton" runat ="server" CausesValidation ="True" CommandName ="Update"
Text ="更新" >
</ asp:LinkButton >
< asp:LinkButton ID ="UpdateCancelButton" runat ="server" CausesValidation ="False" CommandName ="Cancel"
Text ="取消" >
</ asp:LinkButton >
</ EditItemTemplate >
< InsertItemTemplate >
OrderNo:
< asp:TextBox ID ="OrderNoTextBox" runat ="server" Text ='<%# Bind("OrderNo") % > '>
</ asp:TextBox >< br />
CustID:
< asp:TextBox ID ="CustIDTextBox" runat ="server" Text ='<%# Bind("CustID") % > '>
</ asp:TextBox >< br />
ContactMan:
< asp:TextBox ID ="ContactManTextBox" runat ="server" Text ='<%# Bind("ContactMan") % > '>
</ asp:TextBox >< br />
Tel:
< asp:TextBox ID ="TelTextBox" runat ="server" Text ='<%# Bind("Tel") % > '>
</ asp:TextBox >< br />
InDate:
< asp:TextBox ID ="InDateTextBox" runat ="server" Text ='<%# Bind("InDate") % > '>
</ asp:TextBox >< br />
< asp:LinkButton ID ="InsertButton" runat ="server" CausesValidation ="True" CommandName ="Insert"
Text ="插入" >
</ asp:LinkButton >
< asp:LinkButton ID ="InsertCancelButton" runat ="server" CausesValidation ="False" CommandName ="Cancel"
Text ="取消" >
</ asp:LinkButton >
</ InsertItemTemplate >
< ItemTemplate >
OrderNo:
< asp:Label ID ="OrderNoLabel" runat ="server" Text ='<%# Eval("OrderNo") % > '> </ asp:Label >< br />
CustID:
< asp:Label ID ="CustIDLabel" runat ="server" Text ='<%# Bind("CustID") % > '> </ asp:Label >< br />
ContactMan:
< asp:Label ID ="ContactManLabel" runat ="server" Text ='<%# Bind("ContactMan") % > '>
</ asp:Label >< br />
Tel:
< asp:Label ID ="TelLabel" runat ="server" Text ='<%# Bind("Tel") % > '> </ asp:Label >< br />
InDate:
< asp:Label ID ="InDateLabel" runat ="server" Text ='<%# Bind("InDate") % > '> </ asp:Label >< br />
</ ItemTemplate >
< PagerTemplate >
< asp:LinkButton CommandName ="Page" CommandArgument ="First" ID ="LBFirst" runat ="server" > << First </ asp:LinkButton >
< asp:LinkButton CommandName ="Page" CommandArgument ="Prev" ID ="LBPrev" runat ="server" > < Prev </ asp:LinkButton >
[Records <% = FormView1.PageIndex + 1 %> of <% = FormView1.PageCount.ToString() %> ]
< asp:LinkButton CommandName ="Page" CommandArgument ="Next" ID ="LBNext" runat ="server" > Next > </ asp:LinkButton >
< asp:LinkButton CommandName ="Page" CommandArgument ="Last" ID ="LBLast" runat ="server" > Last >> </ asp:LinkButton >
</ PagerTemplate >
</ asp:FormView >
Style ="position: static" AllowPaging ="true" >
< EditItemTemplate >
OrderNo:
< asp:Label ID ="OrderNoLabel1" runat ="server" Text ='<%# Eval("OrderNo") % > '> </ asp:Label >< br />
CustID:
< asp:TextBox ID ="CustIDTextBox" runat ="server" Text ='<%# Bind("CustID") % > '>
</ asp:TextBox >< br />
ContactMan:
< asp:TextBox ID ="ContactManTextBox" runat ="server" Text ='<%# Bind("ContactMan") % > '>
</ asp:TextBox >< br />
Tel:
< asp:TextBox ID ="TelTextBox" runat ="server" Text ='<%# Bind("Tel") % > '>
</ asp:TextBox >< br />
InDate:
< asp:TextBox ID ="InDateTextBox" runat ="server" Text ='<%# Bind("InDate") % > '>
</ asp:TextBox >< br />
< asp:LinkButton ID ="UpdateButton" runat ="server" CausesValidation ="True" CommandName ="Update"
Text ="更新" >
</ asp:LinkButton >
< asp:LinkButton ID ="UpdateCancelButton" runat ="server" CausesValidation ="False" CommandName ="Cancel"
Text ="取消" >
</ asp:LinkButton >
</ EditItemTemplate >
< InsertItemTemplate >
OrderNo:
< asp:TextBox ID ="OrderNoTextBox" runat ="server" Text ='<%# Bind("OrderNo") % > '>
</ asp:TextBox >< br />
CustID:
< asp:TextBox ID ="CustIDTextBox" runat ="server" Text ='<%# Bind("CustID") % > '>
</ asp:TextBox >< br />
ContactMan:
< asp:TextBox ID ="ContactManTextBox" runat ="server" Text ='<%# Bind("ContactMan") % > '>
</ asp:TextBox >< br />
Tel:
< asp:TextBox ID ="TelTextBox" runat ="server" Text ='<%# Bind("Tel") % > '>
</ asp:TextBox >< br />
InDate:
< asp:TextBox ID ="InDateTextBox" runat ="server" Text ='<%# Bind("InDate") % > '>
</ asp:TextBox >< br />
< asp:LinkButton ID ="InsertButton" runat ="server" CausesValidation ="True" CommandName ="Insert"
Text ="插入" >
</ asp:LinkButton >
< asp:LinkButton ID ="InsertCancelButton" runat ="server" CausesValidation ="False" CommandName ="Cancel"
Text ="取消" >
</ asp:LinkButton >
</ InsertItemTemplate >
< ItemTemplate >
OrderNo:
< asp:Label ID ="OrderNoLabel" runat ="server" Text ='<%# Eval("OrderNo") % > '> </ asp:Label >< br />
CustID:
< asp:Label ID ="CustIDLabel" runat ="server" Text ='<%# Bind("CustID") % > '> </ asp:Label >< br />
ContactMan:
< asp:Label ID ="ContactManLabel" runat ="server" Text ='<%# Bind("ContactMan") % > '>
</ asp:Label >< br />
Tel:
< asp:Label ID ="TelLabel" runat ="server" Text ='<%# Bind("Tel") % > '> </ asp:Label >< br />
InDate:
< asp:Label ID ="InDateLabel" runat ="server" Text ='<%# Bind("InDate") % > '> </ asp:Label >< br />
</ ItemTemplate >
< PagerTemplate >
< asp:LinkButton CommandName ="Page" CommandArgument ="First" ID ="LBFirst" runat ="server" > << First </ asp:LinkButton >
< asp:LinkButton CommandName ="Page" CommandArgument ="Prev" ID ="LBPrev" runat ="server" > < Prev </ asp:LinkButton >
[Records <% = FormView1.PageIndex + 1 %> of <% = FormView1.PageCount.ToString() %> ]
< asp:LinkButton CommandName ="Page" CommandArgument ="Next" ID ="LBNext" runat ="server" > Next > </ asp:LinkButton >
< asp:LinkButton CommandName ="Page" CommandArgument ="Last" ID ="LBLast" runat ="server" > Last >> </ asp:LinkButton >
</ PagerTemplate >
</ asp:FormView >
另外在GridView的PagerTemplate中自定义的按钮的使用,这里要注意的一点是,PagerTempate模板中按钮的命令必须以脚本的形式实现,而不能使用后台代码,具体可能有别的方法,如果谁知道,可以告诉小弟一下,谢谢。
代码如下:
<%
...
@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2"
%>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< script runat ="server" > ...
void btnComm_Click(object sender, EventArgs e)
...{
////switch (e.CommandName)
//{
// case "Submit":
Response.Write("Hello World!");
// break;
//}
}
</ script >
< title > 无标题页 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< asp:GridView ID ="GridView1" runat ="server" AllowPaging ="True" AutoGenerateColumns ="False"
DataKeyNames ="CustomerID" DataSourceID ="SqlDataSource1" Style ="position: static" PageSize ="5" OnSelectedIndexChanged ="GridView1_SelectedIndexChanged" >
< Columns >
< asp:BoundField DataField ="CustomerID" HeaderText ="CustomerID" ReadOnly ="True" SortExpression ="CustomerID" />
< asp:BoundField DataField ="CompanyName" HeaderText ="CompanyName" SortExpression ="CompanyName" />
< asp:BoundField DataField ="ContactName" HeaderText ="ContactName" SortExpression ="ContactName" />
< asp:BoundField DataField ="ContactTitle" HeaderText ="ContactTitle" SortExpression ="ContactTitle" />
< asp:BoundField DataField ="Address" HeaderText ="Address" SortExpression ="Address" />
< asp:BoundField DataField ="City" HeaderText ="City" SortExpression ="City" />
< asp:BoundField DataField ="Region" HeaderText ="Region" SortExpression ="Region" />
< asp:BoundField DataField ="PostalCode" HeaderText ="PostalCode" SortExpression ="PostalCode" />
< asp:BoundField DataField ="Country" HeaderText ="Country" SortExpression ="Country" />
< asp:BoundField DataField ="Phone" HeaderText ="Phone" SortExpression ="Phone" />
< asp:BoundField DataField ="Fax" HeaderText ="Fax" SortExpression ="Fax" />
</ Columns >
< PagerTemplate >
< asp:Button CommandName ="Page" CommandArgument ="First" Text ="First" runat ="server" ID ="btnFirt" />
< asp:Button CommandName ="Page" CommandArgument ="Prev" Text ="Prev" runat ="server" ID ="btnPrev" />
< asp:Button CommandName ="Page" CommandArgument ="Next" Text ="Next" runat ="server" ID ="btnNext" />
< asp:Button CommandName ="Page" CommandArgument ="Last" Text ="Last" runat ="server" ID ="btnLast" />
< asp:Button ID ="btnComm" Text ="Comm" runat ="server" OnClick ="btnComm_Click" />
</ PagerTemplate >
</ asp:GridView >
< asp:SqlDataSource ID ="SqlDataSource1" runat ="server" ConnectionString ="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand ="SELECT * FROM [Customers]" ></ asp:SqlDataSource >
</ div >
</ form >
</ body >
</ html >
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< script runat ="server" > ...
void btnComm_Click(object sender, EventArgs e)
...{
////switch (e.CommandName)
//{
// case "Submit":
Response.Write("Hello World!");
// break;
//}
}
</ script >
< title > 无标题页 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< asp:GridView ID ="GridView1" runat ="server" AllowPaging ="True" AutoGenerateColumns ="False"
DataKeyNames ="CustomerID" DataSourceID ="SqlDataSource1" Style ="position: static" PageSize ="5" OnSelectedIndexChanged ="GridView1_SelectedIndexChanged" >
< Columns >
< asp:BoundField DataField ="CustomerID" HeaderText ="CustomerID" ReadOnly ="True" SortExpression ="CustomerID" />
< asp:BoundField DataField ="CompanyName" HeaderText ="CompanyName" SortExpression ="CompanyName" />
< asp:BoundField DataField ="ContactName" HeaderText ="ContactName" SortExpression ="ContactName" />
< asp:BoundField DataField ="ContactTitle" HeaderText ="ContactTitle" SortExpression ="ContactTitle" />
< asp:BoundField DataField ="Address" HeaderText ="Address" SortExpression ="Address" />
< asp:BoundField DataField ="City" HeaderText ="City" SortExpression ="City" />
< asp:BoundField DataField ="Region" HeaderText ="Region" SortExpression ="Region" />
< asp:BoundField DataField ="PostalCode" HeaderText ="PostalCode" SortExpression ="PostalCode" />
< asp:BoundField DataField ="Country" HeaderText ="Country" SortExpression ="Country" />
< asp:BoundField DataField ="Phone" HeaderText ="Phone" SortExpression ="Phone" />
< asp:BoundField DataField ="Fax" HeaderText ="Fax" SortExpression ="Fax" />
</ Columns >
< PagerTemplate >
< asp:Button CommandName ="Page" CommandArgument ="First" Text ="First" runat ="server" ID ="btnFirt" />
< asp:Button CommandName ="Page" CommandArgument ="Prev" Text ="Prev" runat ="server" ID ="btnPrev" />
< asp:Button CommandName ="Page" CommandArgument ="Next" Text ="Next" runat ="server" ID ="btnNext" />
< asp:Button CommandName ="Page" CommandArgument ="Last" Text ="Last" runat ="server" ID ="btnLast" />
< asp:Button ID ="btnComm" Text ="Comm" runat ="server" OnClick ="btnComm_Click" />
</ PagerTemplate >
</ asp:GridView >
< asp:SqlDataSource ID ="SqlDataSource1" runat ="server" ConnectionString ="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand ="SELECT * FROM [Customers]" ></ asp:SqlDataSource >
</ div >
</ form >
</ body >
</ html >