-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathForm1.cs
More file actions
78 lines (68 loc) · 3.38 KB
/
Form1.cs
File metadata and controls
78 lines (68 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using DevExpress.DashboardCommon;
using DevExpress.DashboardWin;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace ExtractDataSourceExample {
public partial class Form1 : DevExpress.XtraEditors.XtraForm {
public Form1() {
InitializeComponent();
dashboardViewer1.CustomizeDashboardTitle += DashboardViewer1_CustomizeDashboardTitle;
dashboardViewer1.LoadDashboard("DashboardTest.xml");
}
delegate void SafeUpdate(string file);
private void CreateExtractAndSave() {
DataSourceCollection dsCollection = new DataSourceCollection();
dsCollection.AddRange(dashboardViewer1.Dashboard.DataSources.Where(d => !(d is DashboardExtractDataSource)));
foreach (var ds in dsCollection) {
DashboardExtractDataSource extractDataSource = new DashboardExtractDataSource();
extractDataSource.ExtractSourceOptions.DataSource = ds;
if (ds is DashboardSqlDataSource)
extractDataSource.ExtractSourceOptions.DataMember = ((DashboardSqlDataSource)(ds)).Queries[0].Name;
extractDataSource.FileName = Path.GetFullPath($"Extract_{ds.Name}.dat");
extractDataSource.UpdateExtractFile();
foreach (DataDashboardItem item in dashboardViewer1.Dashboard.Items)
if (item.DataSource == ds)
item.DataSource = extractDataSource;
}
dashboardViewer1.Dashboard.DataSources.RemoveRange(dsCollection);
dashboardViewer1.Dashboard.SaveToXml("Dashboard_Extract.xml");
}
private void UpdateExtract() {
dashboardViewer1.ReloadData();
foreach (var ds in dashboardViewer1.Dashboard.DataSources.Where(d => d is DashboardExtractDataSource)) {
((DashboardExtractDataSource)ds).UpdateExtractFile();
}
}
private async void UpdateExtractAsync() {
await dashboardViewer1.UpdateExtractDataSourcesAsync(
(fileName, result) => {
OnDataReady(fileName);
},
(fileName, result) => {
MessageBox.Show($"File {fileName} updated ");
});
}
void OnDataReady(string fileName) {
dashboardViewer1.Invoke(new SafeUpdate(UpdateViewer), new object[] { fileName });
}
void UpdateViewer(string fileName) {
MessageBox.Show($"Data for the file {fileName} is ready ");
dashboardViewer1.ReloadData();
}
private void DashboardViewer1_CustomizeDashboardTitle(object sender, CustomizeDashboardTitleEventArgs e) {
DashboardToolbarItem itemUpdate = new DashboardToolbarItem((args) => UpdateExtract()) {
Caption = "Update Extract Data Source",
};
e.Items.Add(itemUpdate);
DashboardToolbarItem itemUpdateAsync = new DashboardToolbarItem((args) => UpdateExtractAsync()) {
Caption = "Async Update Extract Data Sources",
};
e.Items.Add(itemUpdateAsync);
DashboardToolbarItem itemSave = new DashboardToolbarItem((args) => CreateExtractAndSave()) {
Caption = "Create Extract Data Source",
};
e.Items.Insert(0,itemSave);
}
}
}