SharePoint中GridView与ListItemCollectionPosition分页

/// <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>

 

posted on 2015-09-14 23:15  !无名之辈  阅读(398)  评论(0)    收藏  举报