由于文章的数量小所以我一页就只让它显示出三条记录,你可以跟据代码设置,
当然为了灵活起见,你可把这个放到显示几条记录的值存入数据库当中,以后想设成多少页这也挺方便的.

(图1)

(图2)
以前写的那个用 ajax 实现无刷新分页
可那时有点问题,那就是在下面没有固定显示哪些几页,而是一下子,把所有文章分页之后的页码全都显示出来了.
如果有五十页的话,那就会有1~50这些页显示在那里
而我们一般看到的都是在这里,只是看到如有50页但我只显示头页10的数字现来
当我点击其中一个数是,会跟这个数在这二个数当中显示的位置,把与之相近的十页的页码显示出来
在图一当中显示得是头十页的数,当我点击图1 当中的 9 时,显示出来的结果如图2所示
这样显示起来是不是要比以前那种好呢.
好了,下面我就把实现上面的代码贴出来.
肯定会有比我更好的法子
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Blog_moreArticle : basePage

...{
protected void Page_Load(object sender, EventArgs e)

...{
if (!IsPostBack)

...{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Blog_moreArticle));

/**////文章总数
articleCount = moreArticle.articleCount;
}
}

/**//// <summary>
/// 每页显示多少条记录
/// </summary>
private static int _pageNumber = 3;

/**//// <summary>
/// 一页显示多少条记录
/// </summary>
private static int pageNumber

...{

get ...{ return _pageNumber; }
}

private static int _count = 1;

/**//// <summary>
/// 要取第几页
/// </summary>
private static int count

...{

get ...{ return _count; }

set ...{ _count = value; }
}

private static int _articleCount = 1;

/**//// <summary>
/// 文章总数
/// </summary>
private static int articleCount

...{

get ...{ return _articleCount; }

set ...{ _articleCount = value; }
}

private static int _pageCount = 0;

/**//// <summary>
/// 有多少页
/// </summary>
private static int pageCount

...{
get

...{
int t = articleCount % pageNumber; //求余数 53 % 10 = 3;
int v = articleCount;
if (t == 0) //如果余数为0,那么页数就不用加一

...{
v = v / pageNumber;
return v;
}
else

...{
v = (v - t) / pageNumber + 1; //因为有余数,得把余数减去然后相除加一得出总页数
return v;
}
//return _userCount;
}

set ...{ _pageCount = value; }
}


取文章排序#region 取文章排序


/**//// <summary>
/// 把文章取出来
/// </summary>
[AjaxPro.AjaxMethod]
public static string article()

...{
return moreArticle.allArticle(pageNumber,count);
}


/**//// <summary>
/// 标题排序
/// </summary>
/// <param name="taxis">排序</param>
/// <returns>string</returns>
[AjaxPro.AjaxMethod]
public static string artitle_title(int taxis)

...{
return moreArticle.allArticle_title(pageNumber,count, taxis);
}


/**//// <summary>
/// 按blog名排序
/// <summary>
/// <param name="taxis">排序</param>
/// <returns>string</returns>
[AjaxPro.AjaxMethod]
public static string artitle_blogName(int taxis)

...{
return moreArticle.allArticle_blogName(pageNumber, count, taxis);
}


/**//// <summary>
/// 按用户名排序
/// </summary>
/// <param name="taxis">排序</param>
/// <returns>string</returns>
[AjaxPro.AjaxMethod]
public static string article_userName(int taxis)

...{
return moreArticle.allArticle_userName(pageNumber, count, taxis);
}


/**//// <summary>
/// 按发表时间排序
/// </summary>
/// <param name="taxis">排序</param>
/// <returns>string</returns>
[AjaxPro.AjaxMethod]
public static string article_issueTime(int taxis)

...{
return moreArticle.allArticle_issueTime(pageNumber, count, taxis);
}

#endregion


/**//// <summary>
/// 得到要翻多少页
/// </summary>
/// <returns></returns>
[AjaxPro.AjaxMethod]
public static int getPageCount()

...{
return pageCount;
}


/**//// <summary>
/// 要读取第几页的数据
/// </summary>
/// <param name="apc"></param>
/// <returns>int</returns>
[AjaxPro.AjaxMethod]
public static void setArticlePageCount(int apc)

...{
count = apc;
}
}
这里用到了个basePage,只是自己写的一个基类,别的页都承继它代码如下
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using XiaoTuNi.LHB_SQL_2005;


/**//// <summary>
/// basePage 的摘要说明
/// </summary>
public class basePage :Page

...{
public basePage()

...{
}
private static string _accessUrl = "";
public static string accessUrl

...{

get ...{ return _accessUrl; }

set ...{ _accessUrl = value;}
}

protected override void OnLoad(EventArgs e)

...{
//页的url地址
accessUrl = HttpContext.Current.Request.Url.ToString();
base.OnLoad(e);
}
}
里面还有一个类就是moreArticle.cs类,这个类主要是用来取数据用的.代码在下面.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;


/**//// <summary>
/// moreArticle 的摘要说明
/// </summary>
public class moreArticle : Operator

...{
public moreArticle()

...{
}


取文章#region 取文章


/**//// <summary>
/// sql语句
/// </summary>
private static string sqlString(int articleNumber, int count)

...{
return "SELECT ArticleID, blogName, userName, title, issueTime FROM uavPage WHERE number> " + articleNumber * (count - 1) + " AND number <= " + articleNumber * count;
}



/**//// <summary>
/// 文章内容
/// </summary>
/// <param name="executeString">sql语句或存储过程名称</param>
/// <returns>string</returns>
private static string articleDate(string executeString)

...{
StringBuilder articleId = new StringBuilder();
StringBuilder blogName = new StringBuilder();
StringBuilder userName = new StringBuilder();
StringBuilder title = new StringBuilder();
StringBuilder issueTime = new StringBuilder();
IDataReader idr = ExecuteReader(executeString);
while (idr.Read())

...{
articleId.Append(idr["articleId"].ToString()).Append("//");
blogName.Append(idr["blogName"].ToString()).Append("//");
userName.Append(idr["userName"].ToString()).Append("//");
title.Append(idr["title"].ToString()).Append("//");
issueTime.Append(idr["issueTime"].ToString()).Append("//");
}
idr.Close();
string temp = articleId.ToString() + "|||" + blogName.ToString() + "|||" + userName.ToString() + "|||" + title.ToString() + "|||" + issueTime.ToString();
return temp;
}


/**//// <summary>
/// 把文章取出来
/// </summary>
public static string allArticle(int articleNumber,int count)

...{
string executeString = sqlString(articleNumber, count) + " order by articleID desc";

return articleDate(executeString);
}


/**//// <summary>
/// 按blog名排序
/// <summary>
/// <param name="taxis">排序</param>
/// <returns>string</returns>
public static string allArticle_blogName(int articleNumber, int count, int taxis)

...{
string executeString = "";
if (taxis == 1)

...{
executeString = sqlString(articleNumber, count) + " ORDER BY blogName";
}
else

...{
executeString = sqlString(articleNumber, count) + " ORDER BY blogName desc";
}
return articleDate(executeString);
}


/**//// <summary>
/// 按用户名排序
/// </summary>
/// <param name="taxis">排序</param>
/// <returns>string</returns>
public static string allArticle_userName(int articleNumber, int count, int taxis)

...{
string executeString = "";
if (taxis == 1)

...{
executeString = sqlString(articleNumber, count) + " ORDER BY userName";
}
else

...{
executeString = sqlString(articleNumber, count) + " ORDER BY userName desc";
}
return articleDate(executeString);
}


/**//// <summary>
/// 标题排序
/// </summary>
/// <param name="taxis">排序</param>
/// <returns>string</returns>
public static string allArticle_title(int articleNumber, int count, int taxis)

...{
string executeString = "";
if (taxis == 1)

...{
executeString = sqlString(articleNumber, count) + " ORDER BY title";
}
else

...{
executeString = sqlString(articleNumber, count) + " ORDER BY title desc";
}
return articleDate(executeString);
}


/**//// <summary>
/// 按发表时间排序
/// </summary>
/// <param name="taxis">排序</param>
/// <returns>string</returns>
public static string allArticle_issueTime(int articleNumber, int count, int taxis)

...{
string executeString = "";
if (taxis == 1)

...{
executeString = sqlString(articleNumber, count) + " ORDER BY issueTime";
}
else

...{
executeString = sqlString(articleNumber, count) + " ORDER BY issueTime desc";
}
return articleDate(executeString);
}

#endregion 取文章


/**//// <summary>
/// 文章总数
/// </summary>
public static int articleCount

...{
get

...{
string executeString = " select Max(number) from uavPage";
int count = int.Parse(ExecuteScalar(executeString) );
return count;
}
}
}
