using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using ICSharpCode.Core; using Mesnac.Action.Base; using Mesnac.Controls.Base; using System.Windows.Forms; using Mesnac.Codd.Session; namespace Mesnac.Action.Default.SynchroData { public class Delete : DefaultAction, IAction { private string caption = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_Caption")); //提示 public void Run(RuntimeParameter runtime) { string msg1 = StringParser.Parse(ResourceService.GetString("Mesnac_Action_Default_SynchroData_Delete_msg1")); //您确认要删除当前信息吗? if (MessageBox.Show(msg1, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } base.RunIni(runtime); //必须调用 #region 限定只对相同DataSource的数据表进行操作 string mcDataSourceID = String.Empty; if (runtime.Sender is Mesnac.Controls.Base.IBaseControl) { mcDataSourceID = (runtime.Sender as Mesnac.Controls.Base.IBaseControl).MCDataSourceID; } #endregion ShowMsg(String.Empty); //清除消息显示标签内容 foreach (DbMCSource dbsource in GetAllDbMCSources()) { if (string.IsNullOrWhiteSpace(dbsource.DesignSource) || string.IsNullOrWhiteSpace(dbsource.DataTable.ToString())) { continue; } if (!String.IsNullOrEmpty(mcDataSourceID) && dbsource.MCDataSource.Site.Name != mcDataSourceID) { continue; } string source = dbsource.DesignSource; string table = dbsource.DataTable; DbHelper dbHelper = NewDbHelper(source); if (dbHelper == null) { continue; } dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; DbMCControlDesignKeyConfig config = new DbMCControlDesignKeyConfig(); List objidcontrols = GetDbMCControlByKey(config.ToString(new string[] { source, table, "GUID" })); foreach (DbMCControl control in objidcontrols) { if (control.BaseControl.MCValue == null || string.IsNullOrWhiteSpace(control.BaseControl.MCValue.ToString())) { continue; } if ((base.DbOptionTypesIsModify(control.BaseControl))) { string guid = control.BaseControl.MCValue.ToString(); string sqlstr = "DELETE FROM [" + table + "] WHERE GUID='" + guid + "'"; if (dbHelper.DbSession.ProviderFactory.GetType().FullName.Contains("OracleClientFactory")) { sqlstr = "DELETE FROM " + table + " WHERE GUID='" + guid + "'"; } dbHelper.ClearParameter(); dbHelper.CommandText = sqlstr; dbHelper.ExecuteNonQuery(); string msg2 = StringParser.Parse(ResourceService.GetString("Mesnac_Action_Default_SynchroData_Delete_msg2")); //信息删除成功! ShowMsg(msg2); #region 记录操作日志 base.DBLog(msg2); #endregion } } } } } }