EpiDashboard.RelatedConnection dashboard_RelatedDataRequested() { if (this.dashboard.DashboardHelper == null) { Epi.Windows.MsgBox.ShowInformation(SharedStrings.DASHBOARD_CANNOT_RELATE_NO_DATA_SOURCE); return(null); } // May arrive here by opening a canvas file without going through normal request routine. this.dashboardHelper = this.dashboard.DashboardHelper; Epi.Windows.Dialogs.ReadRelatedDialog dlg = new Dialogs.ReadRelatedDialog(this.dashboard.DashboardHelper.TableColumnNames); if (dashboard.DashboardHelper.IsUsingEpiProject) { Dictionary <string, string> tableColumnNamesFiltered = new Dictionary <string, string>(); foreach (KeyValuePair <string, string> kvp in this.dashboardHelper.TableColumnNames) { if (kvp.Value.ToLowerInvariant() != "epi.fields.groupfield") { tableColumnNamesFiltered.Add(kvp.Key, kvp.Value); } } dlg = new Dialogs.ReadRelatedDialog(this.dashboard.DashboardHelper.View.Project, tableColumnNamesFiltered); } EpiDashboard.RelatedConnection relatedConnection = null; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (dlg.SelectedDataSource is Project && dlg.SelectedItemType == Dialogs.SelectedItemType.Form) { Project project = (Project)dlg.SelectedDataSource; View view = project.GetViewByName(dlg.SelectedDataMember); IDbDriver dbDriver = DBReadExecute.GetDataDriver(project.FilePath); relatedConnection = new EpiDashboard.RelatedConnection(view, dbDriver, dlg.ParentKeyField, dlg.ChildKeyField, dlg.UseUnmatched, false); if (dashboardHelper.IsUsingEpiProject && dashboardHelper.View.Project.FilePath == project.FilePath) { relatedConnection.SameDataSource = true; } } else if (dlg.SelectedDataSource is Project && dlg.SelectedItemType == Dialogs.SelectedItemType.Table) { Project project = (Project)dlg.SelectedDataSource; IDbDriver dbDriver = project.CollectedData.GetDbDriver(); relatedConnection = new EpiDashboard.RelatedConnection(dlg.SelectedDataMember, dbDriver, dlg.ParentKeyField, dlg.ChildKeyField, dlg.UseUnmatched, false); if (dashboardHelper.IsUsingEpiProject && dashboardHelper.View.Project.FilePath == project.FilePath) { relatedConnection.SameDataSource = true; } } else { IDbDriver dbDriver = (IDbDriver)dlg.SelectedDataSource; relatedConnection = new EpiDashboard.RelatedConnection(dlg.SelectedDataMember, dbDriver, dlg.ParentKeyField, dlg.ChildKeyField, dlg.UseUnmatched, false); } dashboard.ReCacheDataSource(false); return(relatedConnection); } return(null); }
EpiDashboard.RelatedConnection dashboard_RelatedDataRequested() { if (this.dashboard.DashboardHelper == null) { Epi.Windows.MsgBox.ShowInformation(SharedStrings.DASHBOARD_CANNOT_RELATE_NO_DATA_SOURCE); return null; } // May arrive here by opening a canvas file without going through normal request routine. this.dashboardHelper = this.dashboard.DashboardHelper; Epi.Windows.Dialogs.ReadRelatedDialog dlg = new Dialogs.ReadRelatedDialog(this.dashboard.DashboardHelper.TableColumnNames); if (dashboard.DashboardHelper.IsUsingEpiProject) { Dictionary<string, string> tableColumnNamesFiltered = new Dictionary<string, string>(); foreach (KeyValuePair<string, string> kvp in this.dashboardHelper.TableColumnNames) { if (kvp.Value.ToLower() != "epi.fields.groupfield") { tableColumnNamesFiltered.Add(kvp.Key, kvp.Value); } } dlg = new Dialogs.ReadRelatedDialog(this.dashboard.DashboardHelper.View.Project, tableColumnNamesFiltered); } EpiDashboard.RelatedConnection relatedConnection = null; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (dlg.SelectedDataSource is Project && dlg.SelectedItemType == Dialogs.SelectedItemType.Form) { Project project = (Project)dlg.SelectedDataSource; View view = project.GetViewByName(dlg.SelectedDataMember); IDbDriver dbDriver = DBReadExecute.GetDataDriver(project.FilePath); relatedConnection = new EpiDashboard.RelatedConnection(view, dbDriver, dlg.ParentKeyField, dlg.ChildKeyField, dlg.UseUnmatched, false); if (dashboardHelper.IsUsingEpiProject && dashboardHelper.View.Project.FilePath == project.FilePath) { relatedConnection.SameDataSource = true; } } else if (dlg.SelectedDataSource is Project && dlg.SelectedItemType == Dialogs.SelectedItemType.Table) { Project project = (Project)dlg.SelectedDataSource; IDbDriver dbDriver = project.CollectedData.GetDbDriver(); relatedConnection = new EpiDashboard.RelatedConnection(dlg.SelectedDataMember, dbDriver, dlg.ParentKeyField, dlg.ChildKeyField, dlg.UseUnmatched, false); if (dashboardHelper.IsUsingEpiProject && dashboardHelper.View.Project.FilePath == project.FilePath) { relatedConnection.SameDataSource = true; } } else { IDbDriver dbDriver = (IDbDriver)dlg.SelectedDataSource; relatedConnection = new EpiDashboard.RelatedConnection(dlg.SelectedDataMember, dbDriver, dlg.ParentKeyField, dlg.ChildKeyField, dlg.UseUnmatched, false); } dashboard.ReCacheDataSource(false); return relatedConnection; } return null; }