/// <summary>后台代码
/// 每页显示的行数
/// </summary>
int iPageSize = 5;
/// <summary>
/// 每次显示的页数
/// </summary>
int iPages = 5;
int iRowsCount = 0;
int iPageCount = 0;
SPQuery query;
protected void Page_Load22(object sender, EventArgs e)
{
query = new SPQuery();
query.ViewAttributes = "Scope='Recursive'";
if (Page.IsPostBack)
{
//提交时
if (ddlPageNumber.SelectedItem.Text == "more")
{
//显示更多
GetResults(iPageSize * iPages, true, ddlPageNumber.SelectedItem.Value);
}
else
{
GetResults(iPageSize, false, ddlPageNumber.SelectedItem.Value);
}
}
else
{
//首次加载时
//将返回的行数设置为每次显示页数的最多
GetResults(iPageSize * iPages, true, string.Empty);
}
}
private void GetResults(int iRowLimit, Boolean bMore, string sPageInfo)
{
System.Web.HttpRequest res = this.Context.Request;
SPList list = SPContext.Current.Web.Lists["考勤表"];
string str = "<Where><Gt><FieldRef Name='ID'/><Value Type='Integer'>0</Value></Gt></Where><OrderBy><FieldRef Name='ID' Ascending='FALSE' /></OrderBy>";
SPListItemCollection items = list.GetItems(new SPQuery() { Query = str, RowLimit = 3, ViewFields = "<FieldRef Name='Title'/><FieldRef Name='ID'/>" });
query.RowLimit = (uint)iRowLimit;
//定位
if (sPageInfo.Length > 0)
{
query.ListItemCollectionPosition = new SPListItemCollectionPosition(sPageInfo);
}
SPListItemCollection listitems = list.GetItems(query);
iRowsCount = listitems.Count;
DataTable dtResults = listitems.GetDataTable();
if (bMore)
{
iPageCount = (int)Math.Ceiling(iRowsCount / (decimal)iPageSize);
int ddlListItemCount = ddlPageNumber.Items.Count;
if (ddlListItemCount > 0)
{
//删除More
ddlListItemCount--;
ddlPageNumber.Items.Remove(ddlPageNumber.Items[ddlListItemCount]);
}
if (iRowsCount > 0)
{
int iRowNum = 0;
SPListItem listitem = null;
//新增的第一页
ddlPageNumber.Items.Add(new ListItem(Convert.ToString(ddlListItemCount + 1), sPageInfo));
for (int i = 2; i <= iPageCount; i++)
{
//""
iRowNum = (i - 1) * iPageSize - 1;
listitem = listitems[iRowNum];
sPageInfo = "Paged=TRUE&p_ID=" + listitem["ID"].ToString();
ddlPageNumber.Items.Add(new ListItem(Convert.ToString(ddlListItemCount + i), sPageInfo));
}
//显示更多...
if (iPageCount == iPages && listitems.ListItemCollectionPosition != null)
{
ddlPageNumber.Items.Add(new ListItem("more", listitems.ListItemCollectionPosition.PagingInfo));
}
//移除多余的行...
if (iRowsCount > iPageSize)
{
for (int i = iRowsCount - 1; i >= iPageSize; i--)
{
dtResults.Rows.RemoveAt(i);
}
}
}
}
GridView1.DataSource = dtResults;
GridView1.DataBind();
}
string GetPageItemID(SPListItemCollection items)
{
try
{
string page = items.ListItemCollectionPosition.PagingInfo.Split(new string[] { "&p_ID=" }, StringSplitOptions.RemoveEmptyEntries)[1].Split('&')[0];
return page;
}
catch
{
return "0";
}
}
<table>
<tr>
<td>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID"/>
<asp:BoundField DataField="Title" HeaderText="标题"/>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td valign="middle" align="center">
<asp:DropDownList ID="ddlPageNumber" runat="server" AutoPostBack="True">
</asp:DropDownList>
</td>
</tr>
</table>