運用SPQuery的RowLimit對SPListItemColliction進行分頁

本文通過SPQuery的RowLimit屬性來實現對moss文檔庫文檔的只取一定條目的分頁效果。
 
String queryString=="<Where><Contains><FieldRef Name='Status'/>" +
        "<Value Type='Text'>Com</Value></Contains></Where>";

//查詢'Status'包含Com的項;
 
SPList docLib= web.GetList("http://xxxx");
SPQuery query=new SPQuery();
query.Query=querysString;

//下面開始做判斷,主要運用viewstate來存儲相關值;
 
//查看viewstate是否爲空,如果爲空,則說明是首次查詢,並把queryString的值賦給viewstate;
 if (ViewState["querystring"] == null)
             ViewState["querystring"] = queryString;
             //下面判斷不爲空的情況,即頁面已經做過查詢了
               else
                {
                   
                   //此處判斷queryString是否已改變,即查詢條件是否改變
 
                    //下面的情況是查詢條件改變:
                    if (ViewState["querystring"].ToString() != queryString)
                    {
                    
                        Session["pageinfo"] = null;  //這個session是用來存儲item.ListItemCollictionPosition;
                        ViewState["querystring"] = queryString;
                    }
                    else
                    {
                        if (Session["pageinfo"] != null && repeat == 1)//repeat是用來區分是上一頁還是下一頁,1爲下一頁
                        {
                            string strpage = ((Microsoft.SharePoint.SPListItemCollectionPosition)Session["pageinfo"]).PagingInfo;
                            if (ViewState["pageindex"] == null)//用來儲存上一頁,當前頁,下一頁的item.ListItemCollictionPosition,通過這個只來判斷是那一頁;
                            {
                                ViewState["pageindex"] = strpage;
                            }
                            else
                            {
                                strpage = ViewState["pageindex"] + ";" + strpage;
                                ViewState["pageindex"] = strpage;
                            }
                        }
                    }
                }
query.RowLimit = (uint)docPerPage;//每頁的文檔數
 
 if (repeat == 1)
            {
                if (Session["pageinfo"] != null)
                    query.ListItemCollectionPosition = (Microsoft.SharePoint.SPListItemCollectionPosition)Session["pageinfo"];
            }
            if (repeat == 2)
            {
               //處理ViewState["pageindex"];
                if (ViewState["pageindex"].ToString().Contains(";"))
                {
                    string[] strpage = ViewState["pageindex"].ToString().Split(';');
                    Session["pageinfo"] = new Microsoft.SharePoint.SPListItemCollectionPosition(strpage[strpage.Length - 2]);
                    query.ListItemCollectionPosition = (Microsoft.SharePoint.SPListItemCollectionPosition)Session["pageinfo"];
                    ViewState["pageindex"] = null;
                    for (int j = 0; j < strpage.Length - 1; j++)
                    {
                        if (j == 0)
                            ViewState["pageindex"] = strpage[j];
                        else
                            ViewState["pageindex"] = ViewState["pageindex"] + ";" + strpage[j];
                    }
                }
                else
                    ViewState["pageindex"] = null;
            }
 
 SPListItemCollection items = docLib.GetItems(query);
//你可以處理你的items了
 
//最後還要處理item.ListItemCollictionPosition;
 query.ListItemCollectionPosition = items.ListItemCollectionPosition;
            Session["pageinfo"] = items.ListItemCollectionPosition;
            if (Session["pageinfo"] == null)
            {
                lbNextPage.Enabled = false;
                lbNextPage2.Enabled = false;
            }
            else
            {
                lbNextPage.Enabled = true;
                lbNextPage2.Enabled = true;
            }
            if (ViewState["pageindex"] == null)
            {
                lbPrePage.Enabled = false;
                lbPerPage2.Enabled = false;
            }
            else
            {
                lbPrePage.Enabled = true;
                lbPerPage2.Enabled = true;
            }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章