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));
        }