GridView分页系列
1:GridView自带分页:GridView自带的分页,是假分页,他每次从数据库把数据全部查询出之后,通过分页的算法,进行按每页数量进行分页。
分页的属性元素:分页功能的实现就是通过对这些属性元素的操作实现的。
//this.GvShow.PageIndex 当前页的索引
//this.GvShow.PageCount 总共的页数
//this.GvShow.Rows.Count 当前页签内的gridview的行数
//this.GvShow.PageSize 每页的记录数
//this.GvShow.PageIndex*this.GvShow.rows.count
+ 1 行索引
前台设置普通的GridView分页:属性AllowPaging="True"、PageSize="2" 设置分页事件
onpageindexchanging="GvShow_PageIndexChanging"
后台方法绑定:
protected
void GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e)
{this.GvShow.PageIndex
= e.NewPageIndex;
BindView();}
2:自定义样式的GridView自带分页:
普通的GridView自带的分页,不带样式,只是普通的1,2,3等,如果希望获取到具有其他分页样式就应该设置<PagerSettings Position="TopAndBottom" PageButtonCount="1" />属性
<%--FirstPageText="首页" LastPageText="尾页" NextPageText="下一页"
PreviousPageText="上一页"--%>
后台访问此属性的实例:
this.GvShow.PagerSettings.FirstPageText
= "首页";
this.GvShow.PagerSettings.LastPageText
= "尾页";
this.GvShow.PagerSettings.NextPageText
= "下一页";
this.GvShow.PagerSettings.PreviousPageText
= "上一页";
this.GvShow.PagerSettings.Mode
= PagerButtons.NextPreviousFirstLast;
通过<PagerStyle HorizontalAlign="Center"
VerticalAlign="Middle" />属性可以设置GRIDVIEW分页的样式
3:在<PagerTemplate></PagerTemplate>分页模板中自定义分页的样式,虽然微软开辟了这个模板提供给用户类似于自定义分页的功能,但这个功能完全还是基于微软的GridView自带的分页进行的,<PagerSettings>属性的Visable的属性必须是true
AllowPaging="true" 与 PageSize="3"属性页都要进行相关的有效设置才可以。这种情况下的分页可以不使用onpageindexchanging="GvShow_PageIndexChanging"微软自带的分页事件,开发自己独立的分页事件与方法即可
范例:
前台代码:
<asp:GridView id="GvShow" runat="server"
Width="910px"
BorderColor="#687BC4" BorderWidth="1px" CellPadding="1"
HorizontalAlign="Center" BorderStyle="None" AllowPaging="true" PageSize="3"
AutoGenerateColumns="False" onpageindexchanging="GvShow_PageIndexChanging"
onrowdatabound="GvShow_RowDataBound"
Height="132px"
onrowcommand="GvShow_RowCommand">
<SelectedRowStyle
ForeColor="#FFFF99"
BackColor="#FFFF99"></SelectedRowStyle>
<AlternatingRowStyle
BackColor="#EEF2F1"></AlternatingRowStyle>
<RowStyle BackColor="White"
Height="24"
></RowStyle>
<HeaderStyle Wrap="False"
HorizontalAlign="Center"
Height="24px"
ForeColor="Black"
VerticalAlign="Middle"
BackColor="#BFD5FA"></HeaderStyle>
<%--<PagerSettings Position="TopAndBottom"
/>--%>
<%--FirstPageText="首页" LastPageText="尾页" NextPageText="下一页"
PreviousPageText="上一页"--%>
<PagerStyle
ForeColor="White"
HorizontalAlign="Center"
BackColor="ActiveBorder"
Font-Underline="false"
/>
<Columns>
<asp:TemplateField HeaderText="省份"><ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:Label ID="lblRegionName"
runat="server"
Text='<%#Eval("rname")
%>' ></asp:Label>
</ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="城市">
<ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:Label ID="lblCityName"
runat="server"
Text='<%#Eval("cname")
%>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="用户名">
<ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:Label ID="lblUserName"
runat="server"
Text='<%#Eval("username")
%>'></asp:Label>
</ItemTemplate></asp:TemplateField></Columns>
<PagerTemplate>
<table cellSpacing="0"
cellPadding="0"
width="100%"
align="center"
border="0">
<tr><td vAlign="middle"
align="center">
『<asp:linkbutton id="cmdbegin"
runat="server"
CommandName="begin" >首页</asp:linkbutton>』
『<asp:linkbutton id="cmdbefore"
runat="server"
CommandName="before"
>上一页</asp:linkbutton>』
『<asp:linkbutton id="cmdafter"
runat="server"
CommandName="after" >下一页</asp:linkbutton>』
『<asp:linkbutton id="cmdend" runat="server"
CommandName="end" >尾页</asp:linkbutton>』</td>
<td vAlign="middle"
align="center">页次:
<asp:label id="txtNowPage"
runat="server"
ForeColor="red">0</asp:label>/<asp:label id="txtAllPage" runat="server" ForeColor="red">0</asp:label>页 共<asp:label id="txtTotal"
runat="server"
ForeColor="red">0</asp:label>条记录 <asp:label id="txtNowRed"
runat="server"
ForeColor="red">0</asp:label>条记录/页</td>
<td vAlign="top"
align="center"><asp:checkbox id="cmdCheck" runat="server" Text="显示数字按钮" AutoPostBack="True"
oncheckedchanged="cmdCheck_CheckedChanged"
></asp:checkbox></td></tr></table></PagerTemplate></asp:GridView>
后台代码:
namespace
GridViewDemo.GridView分页系列
{
public partial
class GridView自定义分页02
: System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
if
(!IsPostBack)
{
BindView();
InitButtons();
}
}
private void
BindView()
{
DataTable
dt = UserDemoAccess.GetUserSouce();
ViewState["RowCounts"]
= dt.Rows.Count.ToString();
this.GvShow.DataSource
= dt;;
this.GvShow.DataBind();
}
protected void
GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GvShow.PageIndex
= e.NewPageIndex;
BindView();
InitButtons();
}
protected void
GvShow_RowDataBound(object sender, GridViewRowEventArgs e)
{
if
(e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "this.setAttribute('BKC',this.style.backgroundColor);
this.style.cursor='default',this.style.backgroundColor='#ffff99'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.getAttribute('BKC');");
}
//if(e.Row.RowType
== DataControlRowType.Pager)
//{
// GridViewRow gr = e.Row;
// //页次 -- 第几页
// Label txtNowPage =
gr.FindControl("txtNowPage") as Label;
// //总页数
// Label txtAllPage =
gr.FindControl("txtAllPage") as Label;
// //总记录数
// Label txtTotal =
gr.FindControl("txtTotal") as Label;
// //条记录/页
// Label txtNowRed =
gr.FindControl("txtNowRed") as Label;
// txtNowPage.Text =
(this.GvShow.PageIndex+1).ToString();
// txtAllPage.Text =
this.GvShow.PageCount.ToString();
// txtTotal.Text =
ViewState["RowCounts"].ToString();
// txtNowRed.Text =
this.GvShow.PageSize.ToString();
//}
}
protected void
cmdCheck_CheckedChanged(object sender, EventArgs e)
{
//CheckBox cmdCheck = this.GvShow.BottomPagerRow.FindControl("cmdCheck")
as CheckBox;
//if
(cmdCheck.Checked)
//{
// this.GvShow.PagerSettings.Mode =
PagerButtons.Numeric;
//}
}
protected void
GvShow_RowCommand(object sender, GridViewCommandEventArgs e)
{ //控制页签
switch(e.CommandName)
{
case
"begin":
this.GvShow.PageIndex
= 0;
break;
case
"before":
if(this.GvShow.PageIndex > 0)
{
this.GvShow.PageIndex -= 1;
}
; break;
case
"after":
if(this.GvShow.PageIndex < this.GvShow.PageCount
- 1)
{
this.GvShow.PageIndex += 1;
}
; break;
case
"end":
this.GvShow.PageIndex
= this.GvShow.PageCount-1;
; break;
}
//控制按钮
InitButtons();
}
private void
InitButtons()
{ //获取gridviewrows的PagerTemplate底部模板
GridViewRow
gr = this.GvShow.BottomPagerRow;
LinkButton
cmdbegin = gr.FindControl("cmdbegin")
as LinkButton;
LinkButton
cmdbefore = gr.FindControl("cmdbefore")
as LinkButton;
LinkButton
cmdafter = gr.FindControl("cmdafter")
as LinkButton;
LinkButton
cmdend = gr.FindControl("cmdend") as LinkButton;
//页次 -- 第几页
Label
txtNowPage = gr.FindControl("txtNowPage")
as Label;
//总页数
Label
txtAllPage = gr.FindControl("txtAllPage")
as Label;
//总记录数
Label
txtTotal = gr.FindControl("txtTotal")
as Label;
//条记录/页
Label
txtNowRed = gr.FindControl("txtNowRed")
as Label;
txtNowPage.Text = (this.GvShow.PageIndex + 1).ToString();
txtAllPage.Text = this.GvShow.PageCount.ToString();
txtTotal.Text = ViewState["RowCounts"].ToString();
txtNowRed.Text = this.GvShow.PageSize.ToString();
cmdbegin.Enabled = false;
cmdbefore.Enabled = false;
cmdafter.Enabled = false;
cmdend.Enabled = false;
if(this.GvShow.PageCount > 1)
{
cmdbegin.Enabled = true;
cmdbefore.Enabled = true;
cmdafter.Enabled = true;
cmdend.Enabled = true;
if(this.GvShow.PageIndex == 0)
{
cmdbegin.Enabled = false;
cmdbefore.Enabled = false;
}else
if(this.GvShow.PageIndex
== this.GvShow.PageCount-1)
{
cmdafter.Enabled = false;
cmdend.Enabled = false;
}
}
}
}
}
此外还可以不利用GridView自带的分页模板标记<PagerTemplate></PagerTemplate>可以在GridView的外部构造一个talbe与gridview对应,这样更加灵活,也应用于div中的GridView。
前台代码:
<table id="tablePager"
runat="server"
cellSpacing="0"
cellPadding="0"
width="100%"
align="center"
border="0">
<tr>
<td vAlign="middle" align="center">
『<asp:linkbutton id="cmdbegin"
runat="server"
CommandName="begin"
OnCommand="PagerButton_Command" >首页</asp:linkbutton>』
『<asp:linkbutton id="cmdbefore"
runat="server"
CommandName="before"
OnCommand="PagerButton_Command"
>上一页</asp:linkbutton>』
『<asp:linkbutton id="cmdafter"
runat="server"
CommandName="after" OnCommand="PagerButton_Command" >下一页</asp:linkbutton>』
『<asp:linkbutton id="cmdend" runat="server"
CommandName="end" OnCommand="PagerButton_Command" >尾页</asp:linkbutton>』
</td>
<td vAlign="middle" align="center">页次:<asp:label id="txtNowPage"
runat="server"
ForeColor="red">0</asp:label>/<asp:label id="txtAllPage" runat="server" ForeColor="red">0</asp:label>页
共<asp:label id="txtTotal"
runat="server"
ForeColor="red">0</asp:label>条记录
<asp:label id="txtNowRed"
runat="server"
ForeColor="red">0</asp:label>条记录/页
</td>
<td vAlign="top" align="center"><asp:checkbox id="cmdCheck"
runat="server"
Text="显示数字按钮" AutoPostBack="True"
oncheckedchanged="cmdCheck_CheckedChanged"
></asp:checkbox></td></tr></table>
这俩种方式的区别在于:适用内部的分页模板标记,在触发事件后,不用重新绑定GridView,这个是由GridView内部的分页机制自动完成的,而采用外部构造的方式,在执行完之后,必须重新绑定gridview,因为这个时候的pageIndex等信息已经变化,需要重新进行绑定。
后台代码:
protected void PagerButton_Command(object
sender, System.Web.UI.WebControls.CommandEventArgs
e)
{
switch
(e.CommandName)
{
case
"begin":
this.GvShow.PageIndex
= 0;
; break;
case
"before":
if
(this.GvShow.PageIndex > 0)
{
this.GvShow.PageIndex -= 1;
}
; break;
case
"after":
if
(this.GvShow.PageIndex < this.GvShow.PageCount - 1)
{
this.GvShow.PageIndex += 1;
}
; break;
case
"end":
this.GvShow.PageIndex
= this.GvShow.PageCount - 1;
; break;
}
//在设置完页签后,将数据源重新绑定到GridView中
BindView();
InitButtons();
}
一个很好样式的假分页,功能齐全:
前台页面:
<table><tr><td>
<asp:GridView id="GvShow" runat="server"
Width="910px"
BorderColor="#687BC4"
BorderWidth="1px"
PageSize="3"
CellPadding="1"
HorizontalAlign="Center"
BorderStyle="None" AllowPaging="true" Height="132px"
AutoGenerateColumns="False"
onrowdatabound="GvShow_RowDataBound"
>
<SelectedRowStyle ForeColor="#FFFF99"
BackColor="#FFFF99"></SelectedRowStyle>
<AlternatingRowStyle BackColor="#EEF2F1"></AlternatingRowStyle>
<RowStyle BackColor="White"
Height="24"
></RowStyle>
<HeaderStyle Wrap="False"
HorizontalAlign="Center"
Height="24px"
ForeColor="Black"
VerticalAlign="Middle"
BackColor="#BFD5FA"></HeaderStyle>
<PagerStyle ForeColor="White"
HorizontalAlign="Center"
BackColor="ActiveBorder"
Font-Underline="false"
/>
<PagerSettings Mode="Numeric"
Position="Bottom" Visible="false" />
<Columns>
<asp:TemplateField HeaderText="省份">
<ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate><asp:Label ID="lblRegionName"
runat="server"
Text='<%#Eval("rname")
%>' >
</asp:Label></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="城市">
<ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate><asp:Label ID="lblCityName"
runat="server"
Text='<%#Eval("cname")
%>' >
</asp:Label></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="用户名">
<ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate><asp:Label ID="lblUserName"
runat="server"
Text='<%#Eval("username")
%>'></asp:Label>
</ItemTemplate></asp:TemplateField></Columns></asp:GridView></td></tr>
<tr><td><table id="tablePager"
runat="server"
cellSpacing="0"
cellPadding="0"
width="100%"
align="center"
border="0">
<tr> <td vAlign="middle"
align="center">
『<asp:linkbutton id="cmdbegin"
runat="server"
CommandName="begin"
OnCommand="PagerButton_Command" >首页</asp:linkbutton>』
『<asp:linkbutton id="cmdbefore"
runat="server"
CommandName="before"
OnCommand="PagerButton_Command"
>上一页</asp:linkbutton>』
『<asp:linkbutton id="cmdafter"
runat="server"
CommandName="after" OnCommand="PagerButton_Command" >下一页</asp:linkbutton>』
『<asp:linkbutton id="cmdend" runat="server"
CommandName="end" OnCommand="PagerButton_Command" >尾页</asp:linkbutton>』
</td>
<td vAlign="middle" align="center">页次:<asp:label id="txtNowPage"
runat="server"
ForeColor="red">0</asp:label>/<asp:label id="txtAllPage" runat="server" ForeColor="red">0</asp:label>页
共<asp:label id="txtTotal"
runat="server"
ForeColor="red">0</asp:label>条记录
<asp:label id="txtNowRed"
runat="server"
ForeColor="red">0</asp:label>条记录/页</td>
<td><asp:LinkButton ID="lbtnTurnNewPage"
runat="server"
Text="跳转" onclick="lbtnTurnNewPage_Click">
</asp:LinkButton>
<asp:TextBox ID="txtTurn"
runat="server" Width="20" Height="20"></asp:TextBox></td>
<td><asp:DropDownList ID="drpPageNumbers"
runat="server"
AutoPostBack="true" onselectedindexchanged="drpPageNumbers_SelectedIndexChanged"></asp:DropDownList></td></tr></table></td></tr></table>
后台页面:
namespace
GridViewDemo.GridView分页系列
{
public partial
class GridView自定义分页04
: System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
if
(!IsPostBack)
{
BindView();
InitButtons();
InitDrp();
}
}
private void
BindView()
{
DataTable
dt = UserDemoAccess.GetUserSouce();
ViewState["PageCount"]
= dt.Rows.Count.ToString();
this.GvShow.DataSource
= dt; ;
this.GvShow.DataBind();
}
protected void
GvShow_RowDataBound(object sender, GridViewRowEventArgs e)
{ if
(e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "this.setAttribute('BKC',this.style.backgroundColor);
this.style.cursor='default',this.style.backgroundColor='#ffff99'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.getAttribute('BKC');");
}
}
protected void
PagerButton_Command(object sender,
System.Web.UI.WebControls.CommandEventArgs
e)
{
switch
(e.CommandName)
{
case
"begin":
this.GvShow.PageIndex
= 0;
; break;
case
"before":
if
(this.GvShow.PageIndex > 0)
{
this.GvShow.PageIndex -= 1;
}
; break;
case
"after":
if
(this.GvShow.PageIndex < this.GvShow.PageCount - 1)
{
this.GvShow.PageIndex += 1;
}
; break;
case
"end":
this.GvShow.PageIndex
= this.GvShow.PageCount - 1;
; break;
}
BindView();
InitButtons();
}
private void
InitButtons()
{
txtNowPage.Text = (this.GvShow.PageIndex + 1).ToString();
txtAllPage.Text = this.GvShow.PageCount.ToString();
txtTotal.Text = ViewState["PageCount"].ToString();
txtNowRed.Text = this.GvShow.PageSize.ToString();
this.cmdbegin.Enabled
= false;
this.cmdbefore.Enabled
= false;
this.cmdafter.Enabled
= false;
this.cmdend.Enabled
= false;
if
(this.GvShow.PageCount > 1)
{
this.cmdbegin.Enabled
= true;
this.cmdbefore.Enabled
= true;
this.cmdafter.Enabled
= true;
this.cmdend.Enabled
= true;
if
(this.GvShow.PageIndex == 0)
{
this.cmdbegin.Enabled
= false;
this.cmdbefore.Enabled
= false;
}
else
if (this.GvShow.PageIndex
== this.GvShow.PageCount - 1)
{
this.cmdafter.Enabled
= false;
this.cmdend.Enabled
= false;
}
}
}
protected void
lbtnTurnNewPage_Click(object sender, EventArgs e)
{
try
{
int
pageIndexNumber = Convert.ToInt32(this.txtTurn.Text.Trim());
if
(pageIndexNumber > this.GvShow.PageCount)
{
Response.Write("越界!");
return;
}
else
if (pageIndexNumber <= 0)
{
Response.Write("负数不灵!");
return;
}
this.GvShow.PageIndex
= pageIndexNumber-1;
BindView();
InitButtons();
}
catch
{
Response.Write("请输入数字!");
return;
}
}
#region 下拉列表分页跳转
protected void
drpPageNumbers_SelectedIndexChanged(object
sender, EventArgs e)
{
DropDownList
drpPageNumbers = (DropDownList)sender;
//改变GridView的页签
this.GvShow.PageIndex
= Convert.ToInt32(ControlDrp);
//页签改变后,重新绑定
BindView();
InitButtons();
}
private void
InitDrp()
{
this.drpPageNumbers.Items.Clear();
for
(int i = 0; i <this.GvShow.PageCount;i++
)
{
this.drpPageNumbers.Items.Add(new ListItem((i+1).ToString(),
i.ToString()));
}
}
private String
ControlDrp
{
set
{
this.drpPageNumbers.SelectedValue
= value;
}
get
{
return
this.drpPageNumbers.SelectedValue;
}
}
#endregion
}
}
一个利用<PagerTemplate> </PagerTemplate>模板实现的假分页实例:(可以在绑定的时候加入dropdownlist的页面选择)
前台页面:
<asp:GridView id="GvShow" runat="server"
Width="910px"
BorderColor="#687BC4" BorderWidth="1px" PageSize="3"
CellPadding="1"
HorizontalAlign="Center"
BorderStyle="None" AllowPaging="true" Height="132px"
AutoGenerateColumns="False" onrowdatabound="GvShow_RowDataBound"
onpageindexchanging="GvShow_PageIndexChanging" >
<SelectedRowStyle ForeColor="#FFFF99"
BackColor="#FFFF99"></SelectedRowStyle>
<AlternatingRowStyle BackColor="#EEF2F1"></AlternatingRowStyle>
<RowStyle BackColor="White"
Height="24"
></RowStyle>
<HeaderStyle Wrap="False"
HorizontalAlign="Center"
Height="24px"
ForeColor="Black"
VerticalAlign="Middle"
BackColor="#BFD5FA"></HeaderStyle>
<PagerStyle ForeColor="Blue"
HorizontalAlign="Center"
BackColor="ActiveBorder"
Font-Underline="false"
/>
<Columns><asp:TemplateField HeaderText="省份">
<ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate><asp:Label ID="lblRegionName"
runat="server"
Text='<%#Eval("rname")
%>' ></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="城市"><ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate><asp:Label ID="lblCityName"
runat="server"
Text='<%#Eval("cname")
%>' ></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="用户名"><ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
<ItemTemplate><asp:Label ID="lblUserName"
runat="server"
Text='<%#Eval("username")
%>'></asp:Label></ItemTemplate>
</asp:TemplateField></Columns>
<PagerTemplate><table align="right"
bgcolor="#e9e9e9"
width="100%"><tr><td style="text-align: right">
[第<b><asp:Label ID="lblPageIndex"
runat="server"
Text="<%#((GridView)Container.Parent.Parent).PageIndex
+ 1 %>"></asp:Label></b>页]
[共<b><asp:Label ID="lblPageCount"
runat="server"
Text="<%#
((GridView)Container.Parent.Parent).PageCount %>"></asp:Label></b>页]
<asp:LinkButton ID="btnFirst"
runat="server"
CausesValidation="False"
CommandArgument="First"
CommandName="Page"
Enabled="<%#
((GridView)Container.NamingContainer).PageIndex != 0 %>"
Text="首页"></asp:LinkButton>
<asp:LinkButton ID="btnPrev"
runat="server"
CausesValidation="False"
CommandArgument="Prev"
CommandName="Page"
Enabled=" <%#
((GridView)Container.NamingContainer).PageIndex != 0 %>"Text="上一页"></asp:LinkButton>
<asp:LinkButton ID="btnNext"
runat="server"
CausesValidation="False"
CommandArgument="Next"
CommandName="Page"
Enabled=" <%#
((GridView)Container.NamingContainer).PageIndex !=
((GridView)Container.NamingContainer).PageCount - 1 %>"
Text="下一页"></asp:LinkButton>
<asp:LinkButton ID="btnLast"
runat="server"
CausesValidation="False"
CommandArgument="Last"
CommandName="Page"
Enabled=" <%#
((GridView)Container.NamingContainer).PageIndex !=
((GridView)Container.NamingContainer).PageCount - 1 %>"Text="尾页"></asp:LinkButton>
<asp:TextBox ID="txtNewPageIndex"
runat="server"
Text="<%#
((GridView)Container.Parent.Parent).PageIndex + 1%>"Width="20px"></asp:TextBox>
<asp:LinkButton ID="btnGo" runat="server"
CausesValidation="false"
CommandArgument="-1"
CommandName="Page"
Text="GO"
></asp:LinkButton></td></tr></table></PagerTemplate></asp:GridView>
namespace
GridViewDemo.GridView分页系列
{
public partial
class GridView自定义分页05
: System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
if
(!IsPostBack)
{
BindView();
}
}
private void
BindView()
{
DataTable
dt = UserDemoAccess.GetUserSouce();
this.GvShow.DataSource
= dt; ;
this.GvShow.DataBind();
}
protected void
GvShow_RowDataBound(object sender, GridViewRowEventArgs e)
{
if
(e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "this.setAttribute('BKC',this.style.backgroundColor);this.style.cursor='default',this.style.backgroundColor='#ffff99'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.getAttribute('BKC');");
}
}
protected void
GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridViewRow
gr = this.GvShow.BottomPagerRow;
TextBox
txtNewPageIndex = gr.FindControl("txtNewPageIndex")
as TextBox;
string
content = CheckPageIndex();
if
(content != string.Empty)
{
Show(this,
content);
//如果发现异常,则重新将文本框中的值,置换成当前页签的!
txtNewPageIndex.Text = (this.GvShow.PageIndex+1).ToString();
return;
}//NewPageIndex
本页跳转点击go的时候,为-2,增加一个处理!微软自带分页中,选中页签当前页无法再点击
//此时的e.NewPageIndex默认为-2
else
if (e.NewPageIndex < 0)
{
int pageIndexTemp = Convert.ToInt32(txtNewPageIndex.Text)
- 1;
this.GvShow.PageIndex
= pageIndexTemp;
BindView();
return;
}
this.GvShow.PageIndex
= e.NewPageIndex;
BindView();
}
//protected void LinkTurn_Command(object
sender,System.Web.UI.WebControls.CommandEventArgs e)
//{
//
if (e.CommandArgument.ToString() == "-1")
// {
//
GridViewRow gr = this.GvShow.BottomPagerRow;
//
TextBox txtNewPageIndex = gr.FindControl("txtNewPageIndex") as
TextBox;
//
try
//
{
//
int pageIndex = Convert.ToInt32(txtNewPageIndex.Text);
//
string content = CheckPageIndex(pageIndex, "command");
//
if ( content != string.Empty)
//
{
// Show(this, content);
// return;
//
}
//
this.GvShow.PageIndex = pageIndex - 1;
//
BindView();
//
}
//
catch
//
{
//
Show(this, "只能输入数字格式!");
//
return;
//
}
// }
//}
private string
CheckPageIndex()
{
string
cotent = string.Empty;
GridViewRow
gr = this.GvShow.BottomPagerRow;
TextBox
txtNewPageIndex = gr.FindControl("txtNewPageIndex")
as TextBox;
try
{
int
pageIndexTemp = Convert.ToInt32(txtNewPageIndex.Text);
if
(pageIndexTemp <= 0 || pageIndexTemp > this.GvShow.PageCount)
{
cotent = "你越位了,朋友!";
}
}
catch
{
cotent = "请输入数字!";
}
return
cotent;
}
public static
void Show(System.Web.UI.Page page, string msg)
{
page.ClientScript.RegisterStartupScript(page.GetType(), "message", "<script
language='javascript' defer>alert('" + msg.ToString() + "');</script>");
}
}
}