public ViewModel() { var years = Enumerable.Range(2019, 70).Select(v => v.ToString()).ToArray(); var units = new[] { "dollar", "kroner", "euro", "yen" }; var reportLevel1 = new[] { "Norway", "Sweden", "Denmark", "Germany", "Finland", "India" }; var reportLevel2 = new[] { "City 1", "City 2", "City 3", "City 4", "City 5" }; var metadataFactory = new DimensionMetadataFactory(); var values = Enumerable.Range(1, 100).Select(v => RandomString(4)).ToArray(); var numProperties = 100; var numValues = 750000; List <object> data = new List <object>(); List <string> fields = Enumerable.Range(1, numProperties).Select(v => $"Item{v}").Concat(new [] { "Value", "ReportLevel1", "ReportLevel2", "Unit", "Year" }).ToList(); var myType = _typeBuilder.GenerateType(fields.Select(f => new DynamicTypePropertyInfo { PropertyName = f, PropertyType = f.Equals("Value") ? typeof(double) : typeof(object) }).ToList()); for (int i = 0; i < numValues; i++) { var obj = Activator.CreateInstance(myType); myType.GetProperty("Unit").SetValue(obj, GetRandomFrom(units)); myType.GetProperty("Year").SetValue(obj, GetRandomFrom(years)); myType.GetProperty("ReportLevel1").SetValue(obj, GetRandomFrom(reportLevel1)); myType.GetProperty("ReportLevel2").SetValue(obj, GetRandomFrom(reportLevel2)); myType.GetProperty("Value").SetValue(obj, 1.0); data.Add(obj); } foreach (var prop in myType.GetProperties().Take(numProperties)) { for (int i = 0; i < numValues; i++) { prop.SetValue(data[i], GetRandomFrom(values), null); } } var cubeMetadata = new CubeMetadata { DataTypeFullName = _typeBuilder.DynamicTypeName, DisplayName = "Pivot" }; fields.ForEach(field => cubeMetadata.DimensionSettings.Add(metadataFactory.Create(field, field, field, field.Equals("Value")))); FlatDataSource = new FlatDataSource { ItemsSource = data, CubesSettings = { cubeMetadata }, DimensionsGenerationMode = DimensionsGenerationMode.Metadata, PreserveMembersOrder = false }; }
private void SettingDatas <T>(IEnumerable <T> datas) { // Gridへのデータソースを設定 xamDataGrid.DataSource = datas; // Pivotに対するデータソースを設定 FlatDataSource flatData = new FlatDataSource() { ItemsSource = datas, ConnectionSettings = new FlatDataConnectionSettings() { ItemsSource = datas } }; xamPivot.DataSource = flatData; xamPivotDataSelector.DataSource = flatData; }
public void ProcessInstruments(CarbonClient cc_) { if (retrieveBackgroundWorker == null) { retrieveBackgroundWorker = new System.ComponentModel.BackgroundWorker {WorkerReportsProgress = true}; retrieveBackgroundWorker.DoWork += (s, a) => { try { a.Result = RetrieveDataForInstruments(cc_); } catch (Exception e) { throw new Exception(e.Message); } }; retrieveBackgroundWorker.RunWorkerCompleted += (s, a) => { if (a.Error != null) { displayMessage("Parsing Error", a.Error.ToString(), MessageBoxIcon.Error); return; } var resultData = a.Result as List<MultiInstrumentData>; if (resultData != null) { itemSource = resultData; var settings = new FlatDataSourceInitialSettings { Rows = RowsToFlatDataSourceSetting(PivotSetting.Rows), Columns = RowsToFlatDataSourceSetting(PivotSetting.Cols), Measures = RowsToFlatDataSourceSetting(PivotSetting.Measures), Filters = RowsToFlatDataSourceSetting(PivotSetting.Filters), }; // Create an instance of the FlatDataSource ds = new FlatDataSource(itemSource, typeof (MultiInstrumentData), settings); View.RefreshViewAndRebinding(); } }; } if (retrieveBackgroundWorker != null && !retrieveBackgroundWorker.IsBusy) retrieveBackgroundWorker.RunWorkerAsync(); }