/// <summary> /// 初始化ViewModel /// <remarks> /// 统一在此处创建并注册CollectionView集合。 /// </remarks> /// </summary> private void InitializeVM() { CurAnnuals = new QueryableDataServiceCollectionView<AnnualDTO>(_context, _context.Annuals); _annualDescriptor = new FilterDescriptor("IsOpen", FilterOperator.IsEqualTo, true); CurAnnuals.FilterDescriptors.Add(_annualDescriptor); CurAnnuals.LoadedData += (sender, e) => { if (CurAnnuals.Count != 0) { _curAnnual = CurAnnuals.First(); _planDescriptor.Value = _curAnnual.Year; if (!Plans.AutoLoad) Plans.AutoLoad = true; else Plans.Load(true); RefreshCommandState(); } }; Plans = _service.CreateCollection(_context.Plans); _planDescriptor = new FilterDescriptor("Year", FilterOperator.IsEqualTo, -1); var sort = new SortDescriptor {Member = "VersionNumber", SortDirection = ListSortDirection.Ascending}; Plans.SortDescriptors.Add(sort); Plans.FilterDescriptors.Add(_planDescriptor); Plans.LoadedData += (sender, e) => { CurPlan = new ObservableCollection<PlanDTO> {Plans.OrderBy(p => p.VersionNumber).LastOrDefault()}; SelPlan = CurPlan.FirstOrDefault(); if (SelPlan != null) { _planHistoryDescriptor.Value = SelPlan.Id; if (!CurPlanHistories.AutoLoad) CurPlanHistories.AutoLoad = true; else CurPlanHistories.Load(true); } RefreshCommandState(); }; _service.RegisterCollectionView(Plans); //注册查询集合 CurPlanHistories = _service.CreateCollection(_context.PlanHistories); _planHistoryDescriptor = new FilterDescriptor("PlanId", FilterOperator.IsEqualTo, Guid.Empty); CurPlanHistories.FilterDescriptors.Add(_planHistoryDescriptor); CurPlanHistories.LoadedData += (o, e) => { foreach (var ph in CurPlanHistories.SourceCollection.Cast<PlanHistoryDTO>()) { ph.ActionCategories.AddRange(ph.ActionCategories); ph.AircraftCategories.AddRange(_service.GetAircraftCategoriesForPlanHistory(ph)); ph.AircraftTypes.AddRange(_service.GetAircraftTypesForPlanHistory(ph)); _context.ChangeState(ph, EntityStates.Unchanged); } }; _service.RegisterCollectionView(CurPlanHistories); //注册查询集合 }
/// <summary> /// 初始化ViewModel /// <remarks> /// 统一在此处创建并注册CollectionView集合。 /// </remarks> /// </summary> private void InitializeVM() { Requests = _service.CreateCollection(_context.Requests.Expand(p => p.RelatedDocs), o => o.ApprovalHistories, o => o.RelatedDocs); var cfd = new CompositeFilterDescriptor {LogicalOperator = FilterCompositionLogicalOperator.And}; var requestDescriptor = new FilterDescriptor("Title", FilterOperator.IsNotEqualTo, "指标飞机申请(系统添加)"); cfd.FilterDescriptors.Add(requestDescriptor); var statusDateDescriptor = new FilterDescriptor("Status", FilterOperator.IsLessThan, (int) RequestStatus.已审批); cfd.FilterDescriptors.Add(statusDateDescriptor); Requests.FilterDescriptors.Add(cfd); Requests.LoadedData += (o, e) => { if (SelRequest == null) SelRequest = Requests.FirstOrDefault(); }; _service.RegisterCollectionView(Requests); Annuals = new QueryableDataServiceCollectionView<AnnualDTO>(_context, _context.Annuals); Annuals.LoadedData += (sender, e) => { if (Annuals.Count != 0 && Annuals.FirstOrDefault(p => p.IsOpen) != null) { _planDescriptor.Value = Annuals.First(p => p.IsOpen).Year; if (!Plans.AutoLoad) Plans.AutoLoad = true; else Plans.Load(true); RefreshCommandState(); } }; Plans = new QueryableDataServiceCollectionView<PlanDTO>(_context, _context.Plans); _planDescriptor = new FilterDescriptor("Year", FilterOperator.IsEqualTo, -1); var sort = new SortDescriptor {Member = "VersionNumber", SortDirection = ListSortDirection.Ascending}; Plans.SortDescriptors.Add(sort); Plans.FilterDescriptors.Add(_planDescriptor); Plans.LoadedData += (sender, e) => { var curPlan = Plans.OrderBy(p => p.VersionNumber).LastOrDefault(); if (curPlan != null) { _planHistoryDescriptor.Value = curPlan.Id; if (!CurPlanHistories.AutoLoad) CurPlanHistories.AutoLoad = true; else CurPlanHistories.Load(true); } RefreshCommandState(); _approvalHistoryCaches = new List<ApprovalHistoryCache>(); }; CurPlanHistories = _service.CreateCollection(_context.PlanHistories); _planHistoryDescriptor = new FilterDescriptor("PlanId", FilterOperator.IsEqualTo, Guid.Empty); var group = new GroupDescriptor {Member = "CanRequest", SortDirection = ListSortDirection.Ascending}; CurPlanHistories.GroupDescriptors.Add(group); CurPlanHistories.FilterDescriptors.Add(_planHistoryDescriptor); _service.RegisterCollectionView(CurPlanHistories); PlanAircrafts = _service.CreateCollection(_context.PlanAircrafts); _service.RegisterCollectionView(PlanAircrafts); }