private void AddDataSource(IDocumentDataSource dataSource, bool isInplaceDataSource) { CriteriaOperator criteria = isInplaceDataSource ? inPlaceCriteria : null; if (!String.IsNullOrEmpty(dataSource.Criteria)) { CriteriaOperator dataSourceCriteria = CriteriaEditorHelper.GetCriteriaOperator(dataSource.Criteria, dataSource.DataType, objectSpace); if (ReferenceEquals(criteria, null)) { criteria = dataSourceCriteria; } else { criteria = new GroupOperator(GroupOperatorType.And, criteria, dataSourceCriteria); } } CollectionSource collectionSource = new CollectionSource(objectSpace, dataSource.DataType, CollectionSourceDataAccessMode.Client, CollectionSourceMode.Proxy); collectionSource.Criteria["SnapDataSourceFiler"] = criteria; if (document.DataSources[dataSource.Name] != null) { document.DataSources[dataSource.Name].DataSource = collectionSource.Collection; } else { document.DataSources.Add(dataSource.Name, collectionSource.Collection); } }
public DocumentViewModel( IDocumentDataSource dataSource, IErrorInfoService errorService) { _dataSource = dataSource; _errorService = errorService; if (_errorService == null) { throw new ArgumentNullException(nameof(errorService), "Не найден обработчик ошибок."); } if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource), "Не найден источник данных."); } NextCommand = new WindowCommand(ProcessDocument, () => !HasErrors); ValidateQtyCommand = new WindowCommand(ProcessValidate); }
internal void ShowNewDataSourceDialog() { IObjectSpace newDataSourceObjectSpace = objectSpace.CreateNestedObjectSpace(); Type dataSourceType = XafTypesInfo.Instance.FindTypeInfo(documentData.GetType()).FindMember("DataSources").ListElementType; IDocumentDataSource dataSource = (IDocumentDataSource)newDataSourceObjectSpace.CreateObject(dataSourceType); DetailView dataSourceDetailView = application.CreateDetailView(newDataSourceObjectSpace, dataSource); ShowViewParameters svp = new ShowViewParameters(dataSourceDetailView); svp.TargetWindow = TargetWindow.NewModalWindow; svp.Context = TemplateContext.PopupWindow; DialogController dc = application.CreateController <DialogController>(); svp.Controllers.Add(dc); dc.Accepting += delegate { newDataSourceObjectSpace.CommitChanges(); IDocumentDataSource newDataSource = (IDocumentDataSource)objectSpace.GetObject(dataSource); documentData.DataSources.Add(newDataSource); AddDataSource(newDataSource, false); }; application.ShowViewStrategy.ShowView(svp, new ShowViewSource(null, null)); }