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 IniForm : DatabaseAction, IAction { public void Run(RuntimeParameter runtime) { base.RunIni(runtime); //必须调用 base.SynchroTable(); base.SynchroField(); foreach (DbMCSource dbsource in GetAllDbMCSources()) { if (string.IsNullOrWhiteSpace(dbsource.DesignSource) || string.IsNullOrWhiteSpace(dbsource.DataTable.ToString())) { continue; } string source = dbsource.DesignSource; string table = dbsource.DataTable; DbHelper dbHelper = NewDbHelper(source); if (dbHelper==null) { continue; } //1、先初始化DataGridView以外的控件数据 foreach (DbMCControl control in GetAllDbMCControls()) { if (control.DbMCSource == null || control.DbMCSource.DbMCKey != dbsource.DbMCKey || string.IsNullOrWhiteSpace(control.BaseControl.InitDataSource)) { continue; } if (control.BaseControl is DataGridView) { continue; } string sqlstr = control.BaseControl.InitDataSource; if (!sqlstr.ToLower().Trim().StartsWith("select")) { if (dbHelper.DbSession.ProviderFactory.GetType().FullName.Contains("OracleClientFactory")) { sqlstr = "SELECT * FROM " + sqlstr; } else { sqlstr = "SELECT * FROM [" + sqlstr + "]"; } } dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = sqlstr; DataTable dt = dbHelper.ToDataTable(); control.BaseControl.BindDataSource = dt; } //2、再初始化DataGridView控件数据 foreach (DbMCControl control in GetAllDbMCControls()) { if (control.DbMCSource == null || control.DbMCSource.DbMCKey != dbsource.DbMCKey || string.IsNullOrWhiteSpace(control.BaseControl.InitDataSource)) { continue; } if (control.BaseControl is DataGridView) { string sqlstr = control.BaseControl.InitDataSource; if (!sqlstr.ToLower().Trim().StartsWith("select")) { if (dbHelper.DbSession.ProviderFactory.GetType().FullName.Contains("OracleClientFactory")) { sqlstr = "SELECT * FROM " + sqlstr; } else { sqlstr = "SELECT * FROM [" + sqlstr + "]"; } } dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = sqlstr; DataTable dt = dbHelper.ToDataTable(); control.BaseControl.BindDataSource = dt; } } } } } }