private static void ConfigureDashboard(IDashboardDefinition dashboardDefinition, RuleMode ruleMode, IXpandDashboardDataSourceFillService dashboardCollectionDataSourceFillService, DataSourceOptionsContainer options, Action <DevExpress.DashboardCommon.Dashboard> editParameters, DashboardDatasourceFilterList datasourceFilterList, DevExpress.DashboardCommon.Dashboard dashboard) { var canEditParameters = new[] { ruleMode, RuleMode.Always }.Contains(dashboardDefinition.EditParameters); if (canEditParameters) { editParameters(dashboard); } dashboardCollectionDataSourceFillService.FillService.DatasourceCreating += (sender, args) => { var filter = datasourceFilterList.Filters.LastOrDefault(_ => _.DataSourceName == args.TargetType.Name); if (filter != null) { dashboardCollectionDataSourceFillService.TopReturnedRecords = filter.TopReturnedRecords; dashboardCollectionDataSourceFillService.ShowPersistentMembersOnly = filter.ShowPersistentMembersOnly; } }; if (options != null) { options.ObjectDataSourceLoadingBehavior = DocumentLoadingBehavior.LoadAsIs; } }
private static void SaveModel(DashboardDatasourceFilterList datasourceFilterList, XafApplication application) { var modelDashboardDataSources = ((IModelDashboardModuleDataSources)((IModelApplicationDashboardModule)application.Model).DashboardModule).DataSources; foreach (var filter in datasourceFilterList.Filters) { if (modelDashboardDataSources[filter.ID] is IModelDashboardDataSourceFilter modelDashboardDataSource) { modelDashboardDataSource.Filter = filter.Filter; modelDashboardDataSource.TopReturnedRecords = filter.TopReturnedRecords; modelDashboardDataSource.ShowPersistentMembersOnly = filter.ShowPersistentMembersOnly; } } }
public static DashboardDatasourceFilterList CreateDashboardDatasourceFilterList( this DevExpress.DashboardCommon.Dashboard dashboard, IDashboardDefinition dashboardDefinition, RuleMode ruleMode, XafApplication application) { var objectSpace = application.CreateObjectSpace(typeof(DashboardDatasourceFilter)); var dashboardDatasourceFilterList = new DashboardDatasourceFilterList(); var dataSources = dashboard.GetDataSources(ruleMode, dashboardDefinition, application.Model); foreach (var item in dataSources.OrderBy(tuple => tuple.ModelDataSource.Index)) { if (item.ModelDataSource is IModelDashboardDataSourceFilter modelFilter && modelFilter.ShowInPopupView) { var filter = objectSpace.CreateObject <DashboardDatasourceFilter>(); filter.ID = item.ModelDataSource.Id(); filter.Filter = modelFilter.Filter; filter.DataSourceName = item.DataSource.Name; filter.TopReturnedRecords = modelFilter.TopReturnedRecords; filter.ShowPersistentMembersOnly = modelFilter.ShowPersistentMembersOnly; dashboardDatasourceFilterList.Filters.Add(filter); } } return(dashboardDatasourceFilterList); }