HI,
I am using the SPGridView, SPGridViewPager in a visual webpart. In the visual webpart, I have two custom webpart properties -
named "Items to show, PagingNumber ". If the "Items to show" is less than 10, then paging is not required. "Paging number" is a dropdown enum which contains 10, 50, 100.
I want to use the "SPListItemCollectionPosition" to page through the items in gridview. How to use it, when using a custom page number?
I have tried the below, but the paging controls are not shown:
<div id="div1" ><SharePoint:SPGridView runat="server" ID="Gridview1" AutoGenerateColumns="false" AllowPaging="true" PageSize="10"><Columns><asp:TemplateField HeaderText="Titles"><ItemTemplate><asp:Label ID="lblTitle" Text='<%# Eval("Title") %>' runat="server"></asp:Label></ItemTemplate></asp:TemplateField></Columns><PagerSettings Mode="NextPreviousFirstLast" Visible="true" NextPageText="Next |" PreviousPageText="Previous |" FirstPageText="First |" LastPageText="Last" /></SharePoint:SPGridView></div><div id="TestPager" ><SharePoint:SPGridViewPager ID="Grid1Pager" runat="server" GridViewId="Gridview1"></SharePoint:SPGridViewPager></div>
In the cs code:
public void BindGridView() { using (SPSite oSite = new SPSite(SiteName)) { using (SPWeb oWeb = oSite.OpenWeb()) { SPList lstPages = oWeb.Lists["Pages"]; SPQuery sQuery = new SPQuery(); var ItemsPerpage = PagingItem.ToString(); if (ItemsPerpage == "Fifty" ) { sQuery.RowLimit = 50; } else if (ItemsPerpage == "Hundred") { sQuery.RowLimit = 100; } else { sQuery.RowLimit = 10; // default Paging is set for 10 } sQuery.Query = "<Where><Eq><FieldRef Name='_ModerationStatus'/><Value Type='ModStat'>0</Value></Eq></Where>"; sQuery.ViewFields = string.Concat("<FieldRef Name='Title' />","<FieldRef Name='EncodedAbsUrl' />"); sQuery.ViewFieldsOnly = true; DataTable dt = new DataTable(); SPListItemCollection myColl = lstPages.GetItems(sQuery); if (myColl.Count > 0) { dt = myColl.GetDataTable(); do { Gridview1.DataSource = dt; Gridview1.DataBind(); sQuery.ListItemCollectionPosition = myColl.ListItemCollectionPosition; } while (sQuery.ListItemCollectionPosition != null); }
Not sure, why the pager is not showing. Total number of records is 110. Rowlimit is 10, so I am expecting Pager.
How to fix this?
Thanks