gridview自定义分页样式
<一>在aspx页面中添加 <PagerTemplate>代码如下
??? <PagerTemplate>
<table width="800px" style="border: 0px; border-style: ridge;" align="center">
<tr>
<td style="border-bottom-style: ridge; width: 100%; text-align: center">
<asp:Label ID="lblCurrrentPage" runat="server" ForeColor="#CC3300"></asp:Label>
<span>移至</span>
<asp:DropDownList ID="page_DropDownList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="page_DropDownList_SelectedIndexChanged">
</asp:DropDownList>
<span>页</span>
<asp:LinkButton ID="lnkBtnFirst" CommandArgument="First" CommandName="page" runat="server">第一页</asp:LinkButton>
<asp:LinkButton ID="lnkBtnPrev" CommandArgument="prev" CommandName="page" runat="server">上一页</asp:LinkButton>
<asp:LinkButton ID="lnkBtnNext" CommandArgument="Next" CommandName="page" runat="server">下一页</asp:LinkButton>
<asp:LinkButton ID="lnkBtnLast" CommandArgument="Last" CommandName="page" runat="server">最后一页</asp:LinkButton>
</td>
</tr>
</table>
</PagerTemplate>
<二>在CS文件中添加GridView的DataBound事件和page_DropDownList_SelectedIndexChanged事件如下
protected void GridView1_DataBound(object sender, EventArgs e)
{
//取得显示分页界面的那一行
GridViewRow pagerRow = GridView1.BottomPagerRow;
if (pagerRow!=null)
{
//取得第一页。上一页。下一页。最后一页的超级链接
LinkButton lnkBtnFirst = (LinkButton)pagerRow.Cells[0].FindControl("lnkBtnFirst");
LinkButton lnkBtnPrev = (LinkButton)pagerRow.Cells[0].FindControl("lnkBtnPrev");
LinkButton lnkBtnNext = (LinkButton)pagerRow.Cells[0].FindControl("lnkBtnNext");
LinkButton lnkBtnLast = (LinkButton)pagerRow.Cells[0].FindControl("lnkBtnLast");
//设置何时应该禁用第一页。上一页。下一页。最后一页的超级链接
if (GridView1.PageIndex == 0)
{
lnkBtnFirst.Enabled = false;
lnkBtnPrev.Enabled = false;
}
else if (GridView1.PageIndex == GridView1.PageCount - 1)
{
lnkBtnNext.Enabled = false;
lnkBtnLast.Enabled = false;
}
else if (GridView1.PageCount <= 0)
{
lnkBtnFirst.Enabled = false;
lnkBtnPrev.Enabled = false;
lnkBtnNext.Enabled = false;
lnkBtnLast.Enabled = false;
}
//从显示分页的行中取得用来显示页次与切换分页的DropDownList控件
DropDownList pageList = (DropDownList)pagerRow.Cells[0].FindControl("page_DropDownList");
//根据欲显示的数据源的总页数,创建DropDownList控件的下拉菜单内容
if (pageList != null)
{
int intPage;
for (intPage = 0; intPage <= GridView1.PageCount - 1; intPage++)
{
//创建一个ListItem对象来存放分页列表
int pageNumber = intPage + 1;
ListItem item = new ListItem(pageNumber.ToString());
//交替显示背景颜色
switch (pageNumber % 2)
{
case 0: item.Attributes.Add("style", "background:#CDC9C2;");
break;
case 1: item.Attributes.Add("style", "color:red; background:white;");
break;
}
if (intPage == GridView1.PageIndex)
{
item.Selected = true;
}
pageList.Items.Add(item);
}
}
//显示当前所在页数与总页数
Label pagerLabel = (Label)pagerRow.Cells[0].FindControl("lblCurrrentPage");
if (pagerLabel != null)
{
int currentPage = GridView1.PageIndex + 1;
pagerLabel.Text = "第" + currentPage.ToString() + "页(共" + GridView1.PageCount.ToString() + " 页)";
}
}
}
protected void page_DropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
//取得显示分页界面的那一行
GridViewRow pagerRow = GridView1.BottomPagerRow;
//从显示页数的行中取得显示页数的DropDownList控件
DropDownList pageList = (DropDownList)pagerRow.Cells[0].FindControl("page_DropDownList");
//将GridView移至用户所选择的页数
GridView1.PageIndex = pageList.SelectedIndex;
//getData();不用数据源需要绑定
}
<三>注意,须设置 AllowPaging="True"
以上采用数据源控件绑定数据;
如代码绑定则需要添加如下代码
if (!IsPostBack)
{
getData();//绑定数据方法
}
//分页
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
getData();
}