private int GetNextPageIndex() { // search for id param and extract var nextPageIndex = 0; if (!string.IsNullOrEmpty(NextPageQuery)) { var searchPID = Regex.Match(NextPageQuery, "p_ID=[0-9]*"); // SEARCH A WAY TO RECOGNIZE THIS IS LAST PAGE if (searchPID.Success) { var splitPID = searchPID.Value.Split(new[] { "=" }, StringSplitOptions.RemoveEmptyEntries); if (splitPID != null && splitPID.Length >= 2) { // find index in origin list based on id var pID = Convert.ToInt32(splitPID[1]); nextPageIndex = OriginalData.OfType <SPListItem>().ToList <SPListItem>().FindIndex(i => i.ID == pID); nextPageIndex = nextPageIndex > (TotalItems - 1) ? TotalItems - 1 : nextPageIndex; } } } else { var lastItemIndex = Data.Count - 1; nextPageIndex = lastItemIndex >= 0 ? OriginalData.OfType <SPListItem>().ToList <SPListItem>().FindIndex(i => i.ID == Data.OfType <SharePointItem>().ToList <SharePointItem>()[lastItemIndex].Id) : 0; } return(nextPageIndex); }
private string GetPagingInfo(int index) { if (index == 1) { return(string.Empty); } var skip = (index - 1) * PageSize; var lastPageItemIndex = (int)((skip > TotalItems ? TotalItems : skip) - 1); // transform to zero based arrays var lastPageItemID = OriginalData.OfType <SPListItem>().ToList().ElementAt(lastPageItemIndex).ID; return(string.Format(@"Paged=TRUE&p_ID={0}", lastPageItemID)); }