private void refreshGrid(bool resetData) { if (resetData) { SelectedWorkspace.ComparedData = null; } gridMain.Columns.Clear(); string overrideKeyField = null; if (!string.IsNullOrEmpty(cboOverrideKeyField.Text)) { overrideKeyField = cboOverrideKeyField.Text; } var dataHelper = new DataHelper(); var bw = new BackgroundWorker(); bw.DoWork += delegate(object sender2, DoWorkEventArgs e2) { dataHelper.CompareData(SelectedWorkspace, bw, true, overrideKeyField); }; var prog = new PaJaMa.WinControls.WinProgressBox(); prog.Cancel += delegate(object sender2, EventArgs e2) { dataHelper.Cancel(); }; prog.Show(bw, "Populating data...", allowCancel: true, progressBarStyle: ProgressBarStyle.Marquee); if (SelectedWorkspace.ComparedData == null) { return; } setData(); //gridMain.DataSource = SelectedWorkspace.ComparedData; foreach (DataGridViewColumn col in gridMain.Columns) { col.ReadOnly = true; } var selectCol = new DataGridViewCheckBoxColumn(); selectCol.Name = "Select"; gridMain.Columns.Insert(0, selectCol); }
private void btnDataDifferences_Click(object sender, EventArgs e) { var bw = new BackgroundWorker(); var tws = (gridTables.DataSource as BindingList <TableWorkspace>).Where(tw => tw.SelectTableForData); var differences = new List <DataDifference>(); var prog = new PaJaMa.WinControls.WinProgressBox(); var dataHelper = new DataHelper(); prog.Cancel += delegate(object sender2, EventArgs e2) { dataHelper.Cancel(); }; bw.DoWork += delegate(object sender2, DoWorkEventArgs e2) { foreach (var tw in tws) { if (bw.CancellationPending) { return; } var diffs = dataHelper.GetDataDifferences(tw, bw); if (diffs != null) { differences.Add(diffs); } } }; prog.Show(bw, allowCancel: true); foreach (var diff in differences) { var row = gridTables.Rows.OfType <DataGridViewRow>().First(r => r.DataBoundItem.Equals(diff.TableWorkspace)); row.Cells[DataDetails.Name].Value = string.Format("{0}/{1}/{2}", diff.Differences, diff.SourceOnly, diff.TargetOnly); } }