コード例 #1
0
ファイル: ResultLoader.cs プロジェクト: object/ODataPad
        public async Task LoadResults(ObservableResultCollection collection, uint count)
        {
            bool loadFailed = false;
            var  task       = Task <IEnumerable <IDictionary <string, object> > > .Factory.StartNew(() =>
            {
                try
                {
                    var odataClient = new ODataClient(collection.ServiceUrl);
                    return(odataClient
                           .From(collection.CollectionName)
                           .Skip(collection.Count)
                           .Top(Math.Max((int)count, PageSize))
                           .FindEntries());
                }
                catch (Exception exception)
                {
                    loadFailed = true;
                    var error  = new Dictionary <string, object>()
                    {
                        {
                            "Error",
                            exception.InnerException == null ?
                            exception.Message :
                            exception.InnerException.Message
                        }
                    };
                    return(new List <IDictionary <string, object> > {
                        error
                    });
                }
            });

            collection.MainPage.EnableResultProgressBar(true);
            var results = await task;

            collection.MainPage.EnableResultProgressBar(false);

            if (results != null)
            {
                collection.HasMoreItems = results.Any() && !loadFailed;
                foreach (var result in results)
                {
                    collection.Add(new ResultDataItem(result, collection.Table));
                }
                _results.Count = (uint)results.Count();
            }
            else
            {
                collection.HasMoreItems = false;
            }

            _asyncStatus = AsyncStatus.Completed;
            if (Completed != null)
            {
                Completed(this, _asyncStatus);
            }
        }
コード例 #2
0
ファイル: ResultLoader.cs プロジェクト: object/ODataPad
 public ResultLoader(ObservableResultCollection collection, uint count)
 {
     LoadResults(collection, count);
 }