这两天终于把AspNetPager分页控件学会了,以前写的分页代码很多也很复杂,用上分页控件后,程序简洁了许多。刚开始学习编程的时候我以为代码越多越好,如果一个程序有十几万行代码,那肯定挺牛,而现在我不这么认为了,如果同样实现一个功能,代码能够做到越简洁越好。
花了两天时间,将安国珠宝的分页改成AspNetPager控件分页,不但少了很多行的代码,功能方面也比我原来写的还要强大很多,那为什么自己还想着把以前的分页代码记录下来呢?因为我觉得以前的代码并非一无是处,留下来供以后参考还是可以的。当然,在稍后我会把AspNetPager控件的使用方法和下载地址发布出来,让更多的朋友开发时可以更加快捷。
前台代码:
<asp:GridView ID="GV_News" runat="server" AutoGenerateColumns="False" CellPadding="1" Width="100%" Height="35px" BorderStyle="None" BorderWidth="0px" ShowHeader="False" GridLines="None" PageSize="20" >
<Columns>
<asp:TemplateField >
<ItemTemplate>
<ul>
<li>
<span class="time"><asp:Label ID="lab_date" runat="server" Text='<%# Bind("字段名") %>'></asp:Label></span>
</li>
</ul>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings Visible="False" />
<EmptyDataTemplate>
暂时没有任何新闻信息!
</EmptyDataTemplate>
</asp:GridView>
<ul>
<li>共有 <asp:Label ID="lab_Totally" runat="server" ForeColor="red"></asp:Label> 行记录</li>
<li>当前第 <asp:Label ID="lab_Front" runat="server" ForeColor="red"><%=GV_News.PageIndex + 1%></asp:Label> 页/共 <asp:Label ID="lab_all" runat="server"><%=GV_News.PageCount%></asp:Label> 页 20 行/页</li>
<li><asp:LinkButton ID="lkbt_first" runat="server" CommandArgument="first" OnClick="lkbt_first_Click">首 页</asp:LinkButton></li>
<li><asp:LinkButton ID="lkbt_prev" runat="server" CommandArgument="prev" OnClick="lkbt_prev_Click">上一页</asp:LinkButton></li>
<li><asp:LinkButton ID="lkbt_next" runat="server" CommandArgument="next" OnClick="lkbt_next_Click">下一页</asp:LinkButton></li>
<li><asp:LinkButton ID="lkbt_last" runat="server" CommandArgument="last" OnClick="lkbt_last_Click">尾 页</asp:LinkButton></li>
<li>跳转至第 <asp:DropDownList ID="ddl_tz" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddl_tz_SelectedIndexChanged"></asp:DropDownList></li>
<li>
</ul>
后台代码:
private void BindNews()
{
try
{
SqlConnection conn =new SqlConnection(ConfigurationManager.ConnectionStrings["DBpath"].ConnectionString);
conn.Open();
string sql = "select * from 表名";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "temp");
GV_News.DataSource = ds.Tables["news"].DefaultView;
GV_News.AllowPaging = true;
GV_News.PageSize = 20;
int num = ds.Tables[0].Rows.Count;
lab_Totally.Text = Convert.ToString(num);
GV_News.DataBind();//绑定datalist
if (num < 21)
{//假如记录条数少于21条,所有分页不可用。
lkbt_first.Enabled = false;
lkbt_prev.Enabled = false;
lkbt_next.Enabled = false;
lkbt_last.Enabled = false;
}
else
{
lkbt_first.Enabled = true;
lkbt_prev.Enabled = true;
lkbt_next.Enabled = true;
lkbt_last.Enabled = true;
}
if (GV_News.PageIndex == 0)
{ //假如在首页,设置“首页”和“上一页”按钮不可用
lkbt_first.Enabled = false;
lkbt_prev.Enabled = false;
}
else
{
lkbt_first.Enabled = true;
lkbt_prev.Enabled = true;
}
if (GV_News.PageIndex == GV_News.PageCount - 1)
{//假如在末页,设置“下一页”和“尾页”按钮不可用
lkbt_next.Enabled = false;
lkbt_last.Enabled = false;
}
else
{
lkbt_next.Enabled = true;
lkbt_last.Enabled = true;
}
}
catch (Exception ex)
{
//提示错误信息
}
finally
{
conn.Close();
}
}
}
protected void lkbt_first_Click(object sender, EventArgs e)
{//首页
switch (((LinkButton)sender).CommandArgument.ToString())
{
case "first"://“first”在“lb_sy”按钮的CommandArgument属性中设置
GV_News.PageIndex = 0;
break;
case "last":
GV_News.PageIndex = GV_News.PageCount - 1;
break;
case "prev":
GV_News.PageIndex = GV_News.PageIndex - 1;
break;
case "next":
GV_News.PageIndex = GV_News.PageIndex + 1;
break;
}
BindNews();
}
protected void lkbt_prev_Click(object sender, EventArgs e)
{//上一页
switch (((LinkButton)sender).CommandArgument.ToString())
{
case "first":
GV_News.PageIndex = 0;
break;
case "last":
GV_News.PageIndex = GV_News.PageCount - 1;
break;
case "prev":
GV_News.PageIndex = GV_News.PageIndex - 1;
break;
case "next":
GV_News.PageIndex = GV_News.PageIndex + 1;
break;
}
BindNews();
}
protected void lkbt_next_Click(object sender, EventArgs e)
{//下一页
switch (((LinkButton)sender).CommandArgument.ToString())
{
case "first":
GV_News.PageIndex = 0;
break;
case "last":
GV_News.PageIndex = GV_News.PageCount - 1;
break;
case "prev":
GV_News.PageIndex = GV_News.PageIndex - 1;
break;
case "next":
GV_News.PageIndex = GV_News.PageIndex + 1;
break;
}
BindNews();
}
protected void lkbt_last_Click(object sender, EventArgs e)
{//尾页
switch (((LinkButton)sender).CommandArgument.ToString())
{
case "first":
GV_News.PageIndex = 0;
break;
case "last":
GV_News.PageIndex = GV_News.PageCount - 1;
break;
case "prev":
GV_News.PageIndex = GV_News.PageIndex - 1;
break;
case "next":
GV_News.PageIndex = GV_News.PageIndex + 1;
break;
}
BindNews();
}
protected void ddl_tz_SelectedIndexChanged(object sender, EventArgs e)
{//跳转至第几页
int CurPage;
//判断是否有分页的请求;
///
if (ddl_tz.SelectedValue != null)
{
CurPage = Convert.ToInt32(ddl_tz.SelectedValue);
}
else
{
CurPage = 1;
}
//设置当前页;
GV_News.PageIndex = CurPage - 1;
BindNews();
}