Esempio n. 1
0
        /// <summary>Computes <see cref="PageSize"/> and <see cref="PageCount"/></summary>
        /// <returns></returns>
        public async Task ResetAsync()
        {
            // Create base query
            ITableQueryAsync <T> baseQuery = _db.Table <T>();

            if (_queryFunc != null)
            {
                baseQuery = _queryFunc(baseQuery);
            }

            // Count items
            ItemCount = await baseQuery.CountAsync().ConfigureAwait(false);

            RaisePropertyChanged(() => PageCount);
        }
Esempio n. 2
0
        /// <summary>
        ///   Update page item according to current page.
        /// </summary>
        /// <returns></returns>
        public override async Task UpdateCurrentPageItemsAsync()
        {
            // Create base query
            ITableQueryAsync <T> baseQuery = _db.Table <T>();

            if (_queryFunc != null)
            {
                baseQuery = _queryFunc(baseQuery);
            }


            // Count items
            _itemCount = await baseQuery.CountAsync().ConfigureAwait(false);


            // Fetch and add items
            int skip = (CurrentPage - 1) * PageSize;
            ITableQueryAsync <T> fetchQuery = baseQuery.Skip(skip).Take(PageSize);

            IEnumerable <T> newItems = await fetchQuery.ToListAsync().ConfigureAwait(false);

            using (CurrentPageItems.SuspendChangeNotifications())
                ((ICollection <T>)CurrentPageItems).ReplaceRange(newItems);
        }