using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Mesnac.Action.Base; using Mesnac.Controls.Base; using System.Windows.Forms; using Mesnac.Codd.Session; namespace Mesnac.Action.Default.SynchroData { public class SelectRow : DatabaseAction, IAction { public void Run(RuntimeParameter runtime) { base.RunIni(runtime); //必须调用 bool isSender = false; List lstDbMCControl = GetAllDbMCControls(); foreach (DbMCControl control in lstDbMCControl) { DataGridView grid = runtime.Sender as DataGridView; DbMCControl dbgrid = null; if (grid != null) { isSender = true; } if (!isSender) { if (control.BaseControl is DataGridView) { dbgrid = control; grid = control.BaseControl as DataGridView; } } if (grid == null) { continue; } if (isSender) { foreach (DbMCControl _dbgrid in lstDbMCControl) { if (_dbgrid.BaseControl == grid) { dbgrid = _dbgrid; break; } } } if (grid.SelectedRows.Count == 0) { continue; } if (dbgrid == null) { continue; } if (grid == null) { continue; } DataGridViewRow row = grid.SelectedRows[0]; foreach (DataGridViewCell cell in row.Cells) { if (cell.Displayed) { grid.CurrentCell = cell; break; } } foreach (DbMCControl set_control in GetAllDbMCControls()) { if ((set_control.DbMCSource != null) && (set_control.DbMCSource.DbMCKey == dbgrid.DbMCKey) && (set_control != control) && (base.DbOptionTypesIsModify(set_control.BaseControl))) { if (!string.IsNullOrWhiteSpace(set_control.DataField)) { try { foreach (DataGridViewColumn dc in grid.Columns) { if (dc.DataPropertyName == set_control.DataField) { set_control.BaseControl.MCValue = row.Cells[dc.Index].Value; break; } } } catch { } } } } if (runtime.Sender is DataGridView) { return; } } } } }