/****************************** * 说明:带操作表格的自定义控件 * 创建人:龚宇超 * 创建日期:2017-09-01 * 修改人: * 修改日期: * 修改备注: * 版本:1.0.0.0 ******************************/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using DevExpress.XtraGrid; using Lskj.Control; using Lskj.Data; using Lskj.Business.Impl; using Lskj.Control.Model; using DevExpress.XtraBars; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraGrid.Columns; using System.Collections; using Lskj.Business; using Lskj.Util; using Lskj.Model; using System.Data.SqlClient; using System.IO; using DevExpress.XtraGrid.Views.Layout; using DevExpress.XtraEditors.Repository; using DevExpress.XtraTab; using DevExpress.XtraEditors; using System.Text.RegularExpressions; using System.Diagnostics; using Lskj.Core; using Lskj.Util.HttpUtil; using Lskj.WebErp.Core.BLL.Abstract; using Lskj.Data.Api.BLL; using DevExpress.XtraGrid.Views.Base; using System.Threading.Tasks; using DevExpress.XtraRichEdit; using DevExpress.XtraRichEdit.API.Native; using DevExpress.XtraGrid.Views.Grid.ViewInfo; using DevExpress.XtraTreeList.Nodes; namespace Lskj.Control { /// /// 带操作表格的自定义控件 /// public partial class ModuleGridEx : UserControl { #region private property /// /// 常用打印对象,用于加载时暂时获取焦点 /// /// The title label object. public DevExpress.XtraEditors.DropDownButton ddbOperObj { get { return ddbOper; } } /// /// 扫码控件 /// private LabelTextEdit _scanEdit; /// /// 设置操作按钮是否可用(包含添加、删除、保存、导入) /// private bool _visibleOperPanel = true; /// /// 设置查询面板是否显示 /// private bool _visibleSearchPanel = true; /// /// mrp模式下查询面板显示 /// private bool _visibleMrpSearchPanel; /// /// 外部已查询的MRP操作按钮数据,供搜索区域复用。 /// public DataTable MrpClickMenus; /// /// 底部操作按钮是否显示简短模式,默认为简短模式 /// private bool _operShortMode = true; /// /// 是否直接打印 /// private bool _isExcPrint; /// /// 主打印Sql /// private string _mainPrintSql; /// /// 打印主sql中关联打印次数返回条件 /// private string _printModeCond; /// /// 无需更新的列 /// private string[] _disUpdateColumns = { "id" }; /// /// 主键 /// private string _parmaryKey = string.Empty; /// /// 树结构、表格、配置字段 /// private string _parentKey = string.Empty; /// /// 打印完成后添加数据用到的参数 /// private List _printSaveParams; /// /// The bbi_import /// private BarButtonItem bbi_import, bbi_export, bbi_word, bbi_print, bbi_detail_export, bbi_Allexport; /// /// 左侧表格列字段 /// private DataRow _leftGridField; /// /// 必须录入字段 /// private DataRow[] _nullFields = new DataRow[] { }; /// /// 查询条件 /// private DataTable _queryTable = new DataTable(); /// /// 固定查询条件 /// private DataTable _fixedQueryTable = new DataTable(); /// /// 表格列 /// private DataTable _gridColumns = new DataTable(); /// /// The _grid all columns /// private DataTable _gridAllColumns = new DataTable(); /// /// 高级查询条件设置 /// private DataTable _schemesTable = new DataTable(); /// /// 保存验证条件表 /// public DataTable SaveCondTab = new DataTable(); /// /// 判断明细是否是拖拽中 /// private bool isSortDrag; /// /// 按钮形式展示的右键信息 /// private List ButtonModeRightMenus = new List(); /// /// 按钮形式展示的右键 /// private List RightButtons = new List(); /// /// 附加右键菜单集合 /// public List itemCommonList = new List(); /// /// 排序关联值 /// private string DetailOrderField = string.Empty; private Point m_mouseDownLocation; private int m_dragHandle; private int[] dragRowsIndex; private DragForm m_dragRowShadow; /// /// Occurs when [on Save Grid call back]. /// public event EventHandler OnSaveGridCallBack; /// /// 删除按钮点击后 /// public event EventHandler AfterDeleteGridCallBack; /// /// 右键执行后回调 /// public event EventHandler RightGridCallBack; /// /// 下面明细表右键执行后回调 /// public event EventHandler DetailRightGridCallBack; /// /// Occurs when [on close callback]. /// public event EventHandler OnCloseCallback; /// /// 点击刷新按钮后执行后回调 /// public event EventHandler AfterRefreshingCallBack; /// /// 初始数据源对应 /// public Dictionary LineStatus = new Dictionary(); /// /// 拖拽模式 /// public bool isDrag = false; /// /// 是否保存成功(Lskj.PubBillSpecial点击保存后,先执行右上方表格保存) /// public bool isSuccessfullySaved; /// /// 扫码添加行 /// public DataRow SweepCodeRow = null; /// /// 浏览器添加行是否成功 /// public bool BrowserAddRow = false; #endregion #region public set property /// /// 公有化下标签 /// public PanelControl ObjPanel { get { return this.pl_buttom; } } /// /// 搜索界面 /// public Panel TipsobjPanel { get { return this.TipsPanel; } } public SimpleButton BtnSave { get { return this.btnSave; } } /// /// 搜索界面 /// public PanelControl SearchPanel { get { return this.pl_top_search; } } [Description("设置操作按钮是否可用(包含添加、删除、保存、导入)")] public bool VisibleOperPanel { get { return this._visibleOperPanel; } set { this._visibleOperPanel = value; this.pl_buttom.Visible = value; } } [Description("设置查询面板是否显示")] public bool VisibleSearchPanel { get { return this._visibleSearchPanel; } set { this._visibleSearchPanel = value; this.pl_top.Visible = value; if (!value) { this.pl_top_search.Visible = value; this.pl_top_fix_search.Visible = value; } } } /// /// mrp状态下查询控件显示 /// public bool VisibleMrpSearchPanel { get { return this._visibleMrpSearchPanel; } set { this._visibleMrpSearchPanel = value; if (value) { this.pl_top.Visible = value; this.pl_top_search.Visible = value; this.pl_top_right.Visible = false; } //this.pl_top_fix_search.Visible = false; } } /// /// 底部操作按钮是否显示简短模式,默认为简短模式 /// /// true if [oper short mode]; otherwise, false. [Description("底部操作按钮是否显示简短模式,默认为简短模式")] public bool OperShortMode { get { return _operShortMode; } set { int width = 72, whiteSpace = 6; if (value) { int left = this.Width - 232; this.btnAdd.Left = left; this.btnDel.Left = this.btnAdd.Left + width + whiteSpace; this.btnSave.Left = this.btnDel.Left + width + whiteSpace; } else { int left = this.Width - 544; this.btnAdd.Left = left; this.btnDel.Left = this.btnAdd.Left + width + whiteSpace; this.btnUpdate.Left = this.btnDel.Left + width + whiteSpace; this.btnSave.Left = this.btnUpdate.Left + width + whiteSpace; this.btnImport.Left = this.btnSave.Left + width + whiteSpace; this.btnExport.Left = this.btnImport.Left + width + whiteSpace; this.btnPrint.Left = this.btnExport.Left + width + whiteSpace; } this.btnUpdate.Visible = this.btnImport.Visible = this.btnExport.Visible = this.btnPrint.Visible = !value; this._operShortMode = value; } } #endregion #region public property /// /// 是否为明细表格 /// public bool IsDetail; /// /// 主键 /// public string ParmaryKey; /// /// 左侧树结构、表格主键 /// public string ParentKeyField; /// /// 特殊情况带入关联值,比如右键菜单调用 /// public string ParentKeyValue; /// /// 左侧树结构、表格主键关联右侧数据字段 /// public string ParentUnionField; /// /// 取底部数据字段 /// public string DetailKeyField; /// /// 关联Key /// public string UnionKey; /// /// 关联Value /// public string UnionValue; /// /// 添加时给控件赋值 /// public string ControlSql; /// /// 查询控件赋值 /// public string SearchControlSql; /// /// 系统模块实体对象 /// /// The system model. public ModuleModel SysModel { get; private set; } /// /// 调用动态链接库默认传递参数 /// public DynamicModel Model { get; private set; } /// /// 左侧树结构 /// public TreeViewEx LeftTreeViewEx; /// /// 左侧表格 /// public GridControlEx LeftGridEx; /// ///特殊左侧表 /// public GridControlEx SpecialLeftTable; /// /// 主表查询时,左侧树表格是否为精确查询(like改成=) /// public bool TreeExactQuery = false; /// /// 父容器表格 /// public GridControlEx ParentGridEx; /// /// 用于随工单 /// /// 标签添加数据 /// public MyControl ParentControlEx; /// /// 自定义查询条件 /// public MyControl SearchObj { get; private set; } private bool mModuleResourcesReleased; /// /// 左查询条件 /// public MyControl _leftGridSearchObj; /// /// 表格对象 /// /// The grid view object. public GridControlEx GridControlObj { get { return this.gcMain; } set { this.gcMain = value; } } /// /// 底部多标签控件 /// public XtraTabControl TabObj; public event SaveEventHander SaveEvent; /// /// 保存完成事件 /// /// The sender. public delegate void SaveEventHander(string where = ""); /// 所有导出程序的回调函数 /// public event EventHandler OnExportCallBack; /// /// 注册设置公共事件私有类 /// private static PubEvenImpl _eventHandler; /// /// 注册设置公共事件类 /// private static PubEvenImpl eventHandler; /// /// 父级条件控件,子控件的值替换父控件的值 /// public MyControl ParentControlObj; /// /// 保存结果 /// private bool SaveResults = false; /// /// 作为明细时对应的标签名 /// public string TagName; /// /// 上方提示框是否创建 /// public bool CreatePromptBox = false; /// /// 上方提示框 /// public LabelRichEdit PromptBox = null; /// /// 上方高度 /// public int TopHeight = 0; /// /// 附加模块关联主表的树型模式 /// public bool AdditionalAssociatedMain = false; /// /// 点击搜索时,判断当前表的明细是否有修改或新增状态的行 /// /// The sender. public event VerifyDetailsTab verifyDetailsTab; public delegate void VerifyDetailsTab(); #endregion #region private method /// /// 说明:初始化查询条件(查询条件不自动查询) /// 创建人:龚宇超 /// 创建日期:2017-09-05 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeQueryCondition(bool ProcessExists = false) { bool fixedQuery = _queryTable == null || _queryTable.Rows.Count == 0; if (!Model.DataCaches.GetValue(this, "SearchObj", out MyControl searchObj)) { searchObj = new MyControl(ReplaceBmpField(this.SysModel.MenuSql), gcMain, LeftTreeViewEx, LeftGridEx, _leftGridSearchObj);//替换sql语句中的bmp字段 searchObj.SpecialLeftTable = this.SpecialLeftTable; searchObj.Model = Model; if (!fixedQuery && Model.DataCaches != null) { searchObj.OtherParams = Model.OtherParams(); DynamicModel searchModel = Model; DataTable searchControls = _queryTable; Model.DataCaches.AddTask(searchObj, "DynamicModel", new Task(() => searchModel)); Model.DataCaches.AddTask(searchObj, "ControlsTable", new Task(() => searchControls)); searchObj.GetSearchDataCaches(Model.DataCaches); } } if (this.MrpClickMenus == null && Model.DataCaches != null) { Model.DataCaches.GetValue( this, "UnionBaseGridRightMenus", out this.MrpClickMenus); } this.SearchObj = searchObj; // 搜索区域复用当前模块配置,MyControl 内部会校验模块号,不一致时仍按原逻辑查询。 this.SearchObj.SystemModel = this.SysModel; this.SearchObj.MrpClickMenus = this.MrpClickMenus; if (this._leftGridField != null) { this.SearchObj.ParentKey = this._parentKey = this._leftGridField["fieldname"] + ""; } this.SearchObj.ModuleId = Model.ModuleId; this.SearchObj.ParentKeyField = this.ParentKeyField; this.SearchObj.ParentUnionField = this.ParentUnionField; //this.SearchObj.preSearchVerification += new PreSearchVerification(OnPreSearchVerification);// 查询条件执行前 this.SearchObj.OnSearchBeforeCallBack += new SearchEventHandler(OnSearchBeforeCallBack);// 查询条件执行前 this.SearchObj.OnSearchAfterCallBack += new EventHandler(OnSearchAfterCallBack);// 查询条件执行后 this.SearchObj.TreeExactQuery = this.TreeExactQuery; // 明细表格默认不查询 this.SearchObj.OnDataSourceBindCallBack += new EventHandler(OnMainSearchDataSourceBindCallBack);// 数据源绑定完成触发 if (!string.IsNullOrEmpty(ParentKeyValue) && !string.IsNullOrEmpty(DetailKeyField)) this.SearchObj.WhereCond = string.Format(" and {0}='{1}'", DetailKeyField, ParentKeyValue); if (fixedQuery) { this.pl_top_fix_search.Visible = true; // 加载固定查询条件 if (!Model.DataCaches.GetValue(this, "FixedQueryFields", out DataTable table)) { table = BaseModuleImpl.GetFixedQueryFields(this.Model.ModuleCode);//加载固定查询条件 } if (Business.Impl.LanguageTranslation.Translatable) { table = Business.Impl.LanguageTranslation.TranslationTableColumn(table, "fieldText"); } //固定条件不显示,隐藏上方。(只显示表格) if (SystemInfo.Instance.HideFixedConditions) { this.pl_top.Visible = false; table = new DataTable(); } // DataTable this.cbField.DisplayMember = "fieldText"; this.cbField.ValueMember = "fieldName"; this.cbField.DataSource = table; if (this.VisibleMrpSearchPanel) this.SearchObj.InitDefaultSearchControl(table, this.pl_top_fix_search, false); else this.SearchObj.InitDefaultSearchControl(table, this.pl_top_fix_search); } else { this.gcMain.gridControl.Tag = pl_top_search; // 加载配置查询条件 this.pl_top_fix_search.Visible = false; this.SearchObj.OtherParams = Model.OtherParams(); if (this.VisibleMrpSearchPanel) this.pl_top.Height = this.SearchObj.InitSearchControl(_queryTable, this.pl_top_search, false, this._schemesTable, Model); else this.pl_top.Height = this.SearchObj.InitSearchControl(_queryTable, this.pl_top_search, this._schemesTable, Model); } } /// /// 说明:初始化常用操作 /// 创建人:龚宇超 /// 创建日期:2017-09-05 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeCommonOperation() { // 常用操作 bbi_import = new BarButtonItem(); bbi_import.Caption = "数据导入"; bbi_import.ItemClick += new ItemClickEventHandler(OnImportItemClick); bbi_export = new BarButtonItem(); bbi_export.Caption = "数据导出"; bbi_export.ItemClick += new ItemClickEventHandler(OnExportItemClick); bbi_Allexport = new BarButtonItem(); bbi_Allexport.Caption = "所有数据导出"; bbi_Allexport.ItemClick += new ItemClickEventHandler(OnAllExportItemClick); bbi_detail_export = new BarButtonItem(); bbi_detail_export.Caption = "明细导出"; bbi_detail_export.ItemClick += new ItemClickEventHandler(btnExportInfo_Click); bbi_print = new BarButtonItem(); bbi_print.Caption = "常规打印"; bbi_print.ItemClick += new ItemClickEventHandler(OnNormalPrintItemClick); bbi_word = new BarButtonItem(); bbi_word.Caption = "帮助文档"; bbi_word.ItemClick += new ItemClickEventHandler(OnWordItemClick); //string[] authorizedPersonnel = SysModel.ImportPermissions.Split(',');//有导入权限的人员 //if (string.IsNullOrWhiteSpace(SysModel.ImportPermissions) || Array.IndexOf(authorizedPersonnel, ERPInfo.Instance.UserName) != -1 || ERPInfo.Instance.UserName.Equals("管理员")) //{ // pm_oper.AddItem(bbi_import); //} DataRow dr = null; // 判断导入权限 if (this.SysModel.ImportEnable && this.ValidateCond(this.SysModel.ImportCond, dr, "P_SystemDllTab", "importCond")) { pm_oper.AddItem(bbi_import); } // 判断导出权限 this.gcMain.ExportPermission = false; if (this.SysModel.ExportEnable && this.ValidateCond(this.SysModel.ExportCond, dr, "P_SystemDllTab", "exportCond") && this.SysModel.ExportPermission) { bbi_export.Tag = SysModel; pm_oper.AddItem(bbi_export); this.gcMain.ExportPermission = true; //this.SysModel.ExportPermission; } if (this.SysModel.ExportPermission && SystemInfo.Instance.DetailExportDisplay) { pm_oper.AddItem(bbi_detail_export); } //判断帮助文档 if (!SystemInfo.Instance.HideHelpDocument) { pm_oper.AddItem(bbi_word); } //pm_oper.AddItem(bbi_export); //pm_oper.AddItem(bbi_Allexport); // pm_oper.AddItem(bbi_detail_export); if (SystemInfo.Instance.ConventionalPrintingDisplay) { pm_oper.AddItem(bbi_print); } //pm_oper.AddItem(bbi_word); } /// /// 说明:初始化常用工具 /// 创建人:龚宇超 /// 创建日期:2018-04-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeCommonTool() { Dictionary dataCaches = Model != null ? Model.DataCaches : null; if (!dataCaches.GetValue(this, "CommonToolGridRightMenus", out DataTable tableCommon)) { tableCommon = BaseModuleImpl.GetBaseGridRightMenus(this.Model.ModuleCode, ModuleType.BaseModuleAdd); } int i = 0, x = 4; foreach (DataRow item in tableCommon.Rows) { if (i > 1) { BarButtonItem itemCommon = new BarButtonItem(); itemCommon.Caption = item["menuname"] + ""; itemCommon.Tag = item; itemCommon.ItemClick += new ItemClickEventHandler(OnCommonItemClick); pm_common.AddItem(itemCommon); } else { SimpleButton itemCommon = new SimpleButton(); //itemCommon.AutoSize = true; itemCommon.Text = item["menuname"] + ""; itemCommon.Tag = item; itemCommon.Size = new System.Drawing.Size(90, 26); itemCommon.Click += new EventHandler(itemCommon_Click); itemCommon.Location = new Point(x + 6, 6); x += itemCommon.Width + 6; pl_buttom.Controls.Add(itemCommon); itemCommonList.Add(itemCommon); i++; } } if (tableCommon.Rows.Count > 0) this.pl_buttom.Visible = true; this.dpbTools.Visible = tableCommon != null && pm_common.ItemLinks.Count > 0; this.dpbTools.Click += DpbTools_Click; //this.dpbTools.Location = new Point(x + 6, 6); } private void DpbTools_Click(object sender, EventArgs e) { foreach (BarItemLink itemLink in this.pm_common.ItemLinks) { DataRow rowItem = itemLink.Item.Tag as DataRow; if (rowItem != null && rowItem.Table.Columns.Contains("MenuCond")) { string menuCond = rowItem["MenuCond"] + ""; string menuCaption = itemLink.Caption; if (!string.IsNullOrEmpty(menuCond)) { try { bool result = true; DataRow parentitem = this.gcMain.GridView.GetFocusedDataRow(); menuCond = ReplaceHelper.ReplaceRowParam(parentitem, menuCond) + ""; if (menuCond.StartsWith("@") || menuCond.StartsWith("!")) { result = "1".Equals(BaseImpl.GetDefaultValue(menuCond)); } else { result = ReplaceHelper.EvalCond(menuCond); } itemLink.Item.Enabled = result; } catch (Exception ex) { MessageUtil.Show("[" + menuCaption + "] " + ResourceKeys.SetRightMenuCondFault); LogHelper.Instance.WriteError(ex); LogUtil.WriteError("验证可操作条件出错!", ex); } } } } } /// /// 说明:常用工具点击 /// 创建人:龚宇超 /// 创建日期:2017-11-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnCommonItemClick(object sender, ItemClickEventArgs e) { try { DataRow rowItem = e.Item.Tag as DataRow; CommonMenu menu = new CommonMenu(this.Model, this.SearchObj, this.GridControlObj); menu.Apply(rowItem); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:常用工具点击 /// 创建人:龚宇超 /// 创建日期:2017-11-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void itemCommon_Click(object sender, EventArgs e) { try { SimpleButton btn = sender as SimpleButton; DataRow rowItem = btn.Tag as DataRow; CommonMenu menu = new CommonMenu(this.Model, this.SearchObj, this.GridControlObj); StaticControl.RightMenuGridView = gcMain.GridView; StaticControl.Comprefix = this.SysModel.PrefixKey; menu.Apply(rowItem); if (StaticControl.ReturnRowLisy.Count > 0) { DataRow[] dataRows = StaticControl.ReturnRowLisy.ToArray(); GridColumnCollection gridColumns = this.gcMain.GridView.Columns; foreach (DataRow item in dataRows) { DataTable table = gcMain.GridControl.DataSourceTable(); int rowNumber = table.Rows.Count; this.BrowserAddRow = false; //新增一行 this.AddGridViewRecord(); if (this.gcMain.GridView.FocusedRowHandle == rowNumber && BrowserAddRow) { //成功新增行,把网页返回的行赋值 foreach (GridColumn col in gridColumns) { if (item.Table.Columns.Contains(col.FieldName)) { // 来源列中是否包含对应字段,包含则使用值 gcMain.GridView.SetRowCellValue(this.gcMain.GridView.FocusedRowHandle, col.FieldName, item[col.FieldName]); } } } } } GridRightMenuModel model = new GridRightMenuModel(rowItem); if (model != null && model.Refresh) { this.ParentGridEx.gridControl.DataSource = SqlHelper.ExecuteDataTable(this.ParentGridEx.LastSearchSql); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:常用工具的明细导出 /// 创建人:王一帆 /// 创建日期:2020-05-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void btnExportInfo_Click(object sender, EventArgs e) { try { if (TabObj.TabPages.Count > 0) { LogUtil.WriteDebug(this.Model.ModuleCode, "导出数据", this.SysModel.MenuText, "明细导出"); XtraTabPage tabPage = TabObj.SelectedTabPage; if (tabPage.Tag is GridControlEx) { (tabPage.Tag as GridControlEx).GridControl.ToExcel(this.Model.FormText); } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:自身表格的拖拽类 /// 创建人:王一帆 /// 创建日期:2017-09-05 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public class DragForm : DevExpress.Utils.Win.TopFormBase { Bitmap m_buff; Graphics m_buffG; /// /// 拖拽方法 /// /// public DragForm(Rectangle _bound) { this.Text = ""; this.FormBorderStyle = FormBorderStyle.None; this.ControlBox = false; this.Size = _bound.Size; this.ShowInTaskbar = false; this.StartPosition = FormStartPosition.Manual; this.Opacity = 0.0d; //TopFormBase已经有默认值了; //m_buff = new Bitmap(_bound.Width, _bound.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); //m_buffG = Graphics.FromImage(m_buff); //m_buffG.CopyFromScreen(_bound.Location, new Point(0, 0), _bound.Size); //this.BackgroundImageLayout = ImageLayout.None; //this.BackgroundImage = m_buff; this.BackColor = ColorTranslator.FromHtml("#0078D7"); this.Location = _bound.Location; } /// /// /// /// protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // e.Graphics.DrawImage(m_buff, 0, 0); } } /// /// 说明:初始化打印 /// 创建人:龚宇超 /// 创建日期:2017-11-22 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializePrint() { Dictionary dataCaches = Model != null ? Model.DataCaches : null; if (!dataCaches.GetValue(this, "PrintTemp70", out DataTable printTable)) { printTable = BaseImpl.GetPrintTemp70(this.Model.ModuleCode); } if (printTable.Rows.Count > 0 && !string.IsNullOrWhiteSpace(printTable.Rows[0][0].ToString())) { for (int i = 0; i < printTable.Rows.Count; i++) { DataRow item = printTable.Rows[i]; BarButtonItem bbi = new BarButtonItem(); int index = i + 1; bbi.Caption = (item["printFile"] + "").Replace(".rmf", "").Replace(".frx", ""); bbi.Tag = item; bbi.ItemClick += new ItemClickEventHandler(OnPrintItem70Click); pm_print.AddItem(bbi); } } else { if (!string.IsNullOrEmpty(this.SysModel.PrintFile)) { String[] strs = this.SysModel.PrintFile.Split('|'); for (int i = 0; i < strs.Length; i++) { BarButtonItem bbi = new BarButtonItem(); int index = i + 1; bbi.Caption = strs[i].Replace(".rmf", "").Replace(".frx", ""); bbi.Tag = strs[i]; bbi.ItemClick += new ItemClickEventHandler(OnCustomPrintItemClick); pm_print.AddItem(bbi); } } } } /// /// 说明:初始化表格操作 /// 创建人:龚宇超 /// 创建日期:2017-09-05 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeGridView() { this.gcMain.Model = this.Model; this.gcMain.SysModel = this.SysModel; Dictionary dataCaches = Model != null ? Model.DataCaches : null; //显示筛选行 if (this.SysModel.LoadFilter) this.gcMain.GridView.OptionsView.ShowAutoFilterRow = true; if (SysModel.AutoMultiHeader == 1 && SysModel.TreeAutoMultiHeader == 1) { // 创建 多表头,树表格 this.panelControl1.Controls.Clear(); this.gcMain = new TreeBandedGridControlEx() { Expansion = SysModel.TreeTableExpand }; this.gcMain.Model = this.Model; this.gcMain.SysModel = this.SysModel; (this.gcMain as TreeBandedGridControlEx).moduleModel = this.SysModel; this.gcMain.Dock = DockStyle.Fill; if (this._gridColumns.Rows.Count == 0 && !string.IsNullOrWhiteSpace(SysModel.TreeKeyFieldName) && !string.IsNullOrWhiteSpace(SysModel.TreeParentFieldName)) { //节点编号 (this.gcMain as TreeBandedGridControlEx).TreeListObj.KeyFieldName = SysModel.TreeKeyFieldName; //父节点编号 (this.gcMain as TreeBandedGridControlEx).TreeListObj.ParentFieldName = SysModel.TreeParentFieldName; } if (this.SysModel.GridObjIsCheck == 1)//主表加载复选框 { GridDragGrid.TreeListAddCheckBox((this.gcMain as TreeBandedGridControlEx).TreeListObj); } this.panelControl1.Controls.Add(this.gcMain); } else if (this.Model.GridEnumObj == GridEnum.BandedGridView || SysModel.AutoMultiHeader == 1) { // 创建多表头,默认标准表格 PanelControl panel = null; if (this.gcMain.gridControl.Tag is PanelControl) panel = this.gcMain.gridControl.Tag as PanelControl; this.panelControl1.Controls.Clear(); this.gcMain = new BandedGridControlEx(); (this.gcMain as BandedGridControlEx).moduleModel = this.SysModel; this.gcMain.Model = this.Model; this.gcMain.SysModel = this.SysModel; this.gcMain.Dock = DockStyle.Fill; this.panelControl1.Controls.Add(this.gcMain); if (this.SysModel.LoadFilter) (this.gcMain as BandedGridControlEx).GridView.OptionsView.ShowAutoFilterRow = true; (this.gcMain as BandedGridControlEx).gridControl.Tag = panel; } else if (this.Model.GridEnumObj == GridEnum.TreeListGridView || SysModel.TreeAutoMultiHeader == 1) { // 创建树表格 this.panelControl1.Controls.Clear(); this.gcMain = new TreeGridControlEx() { Expansion = SysModel.TreeTableExpand }; this.gcMain.Model = this.Model; this.gcMain.SysModel = this.SysModel; this.gcMain.Dock = DockStyle.Fill; if (this._gridColumns.Rows.Count == 0 && !string.IsNullOrWhiteSpace(SysModel.TreeKeyFieldName) && !string.IsNullOrWhiteSpace(SysModel.TreeParentFieldName)) { //节点编号 (this.gcMain as TreeGridControlEx).TreeListObj.KeyFieldName = SysModel.TreeKeyFieldName; //父节点编号 (this.gcMain as TreeGridControlEx).TreeListObj.ParentFieldName = SysModel.TreeParentFieldName; } if (this.SysModel.GridObjIsCheck == 1)//主表加载复选框 { GridDragGrid.TreeListAddCheckBox((this.gcMain as TreeGridControlEx).TreeListObj); } this.panelControl1.Controls.Add(this.gcMain); } //如果配置了聚合模式则构建多表头覆盖当前表格 if (SysModel.IsCustomGroup == 1) { BandedGridControlEx bandedGridControlEx = new BandedGridControlEx(); bandedGridControlEx.moduleModel = this.SysModel; bandedGridControlEx.Model = this.Model; bandedGridControlEx.SysModel = this.SysModel; bandedGridControlEx.Dock = DockStyle.Fill; bandedGridControlEx.TotalQuantity = this.SysModel.TotalQuantity; // 明确设置禁止自动调整列宽 bandedGridControlEx.BandedView.OptionsView.ColumnAutoWidth = false; gcMain.CustomGroupBandEx = bandedGridControlEx; gcMain.AggregationFreeze = this.SysModel.AggregationFreeze; this.panelControl1.Controls.Add(bandedGridControlEx); bandedGridControlEx.BringToFront(); } else if (SysModel.IsCustomGroup == 2) { TreeBandedGridControlEx treeBandedGridControlEx = new TreeBandedGridControlEx(); treeBandedGridControlEx.moduleModel = this.SysModel; treeBandedGridControlEx.Model = this.Model; treeBandedGridControlEx.SysModel = this.SysModel; treeBandedGridControlEx.Dock = DockStyle.Fill; // 明确设置禁止自动调整列宽 treeBandedGridControlEx.TreeListObj.OptionsView.AutoWidth = false; gcMain.CustomGroupTreeBandEx = treeBandedGridControlEx; gcMain.AggregationFreeze = this.SysModel.AggregationFreeze; this.panelControl1.Controls.Add(treeBandedGridControlEx); treeBandedGridControlEx.BringToFront(); } // 报表类型创建只读列 if (this.Model is DynamicReportModel) { this.gcMain.SetReadOnlyColumns(this._gridColumns, GridCustomColumnStruct.BaseMainGridView + this.SysModel.FormKey); } else { if (SysModel.CanEdit) { this.gcMain.SetEditColumns(this._gridColumns, GridCustomColumnStruct.BaseMainGridView + this.SysModel.FormKey); } else { this.gcMain.SetReadOnlyColumns(this._gridColumns, GridCustomColumnStruct.BaseMainGridView + this.SysModel.FormKey); } } if (!dataCaches.GetValue(this, "BaseGridRowColors", out DataTable dtGridRowColors)) { dtGridRowColors = BaseModuleImpl.GetBaseGridRowColors(this.Model.ModuleCode); } this.gcMain.SetGridRowColors(dtGridRowColors); if (!dataCaches.GetValue(this, "BaseGridRightMenus", out DataTable dt)) { dt = BaseModuleImpl.GetBaseGridRightMenus(this.Model.ModuleCode); } //获取要以上方按钮形式加载的按钮 if (dt.Columns.Contains("ButtonMode")) { ButtonModeRightMenus = dt.Rows.Cast().Where(x => "1".Equals(x["ButtonMode"] + "")).ToList(); } if (this.gcMain is TreeGridControlEx) { (this.gcMain as TreeGridControlEx).SetGridRightMenus(dt, this.Model, OnGridViewRightCallBack, this.SearchObj, (this.gcMain as TreeGridControlEx).MenuStrip); } if (this.gcMain is BandedGridControlEx) { BandedGridControlEx banGridControlEx = (this.gcMain as BandedGridControlEx); banGridControlEx.SetGridRightMenus(dt, this.Model, OnGridViewRightCallBack, this.SearchObj, null); banGridControlEx.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged); banGridControlEx.GridView.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor); } else { this.gcMain.SetGridRightMenus(dt, this.Model, OnGridViewRightCallBack, this.SearchObj, null); } if (gcMain.CustomGroupBandEx != null) { gcMain.CustomGroupBandEx.SetGridRowColors(dtGridRowColors); gcMain.CustomGroupBandEx.SetGridRightMenus(dt, this.Model, OnGridViewRightCallBack, this.SearchObj, null); gcMain.CustomGroupBandEx.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged); gcMain.CustomGroupBandEx.GridView.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor); } if (gcMain.CustomGroupTreeBandEx != null) { gcMain.CustomGroupTreeBandEx.SetGridRowColors(dtGridRowColors); gcMain.CustomGroupTreeBandEx.SetGridRightMenus(dt, this.Model, OnGridViewRightCallBack, this.SearchObj, (this.gcMain as TreeGridControlEx).MenuStrip); } //如果配置了聚合模式则构建多表头覆盖当前表格 //if (SysModel.IsCustomGroup == 1) //{ // BandedGridControlEx bandedGridControlEx = new BandedGridControlEx(); // bandedGridControlEx.moduleModel = this.SysModel; // bandedGridControlEx.Model = this.Model; // bandedGridControlEx.SysModel = this.SysModel; // bandedGridControlEx.Dock = DockStyle.Fill; // // 明确设置禁止自动调整列宽 // bandedGridControlEx.BandedView.OptionsView.ColumnAutoWidth = false; // gcMain.CustomGroupBandEx = bandedGridControlEx; // bandedGridControlEx.SetGridRightMenus(dt, this.Model, OnGridViewRightCallBack, this.SearchObj, null); // this.panelControl1.Controls.Add(bandedGridControlEx); // bandedGridControlEx.BringToFront(); //} InitializedragState(); SetGridRowHeightAndFont(); if (Model.IsBaseModule) this.gcMain.GridView.DoubleClick += new EventHandler(OnGridViewDoubleClick); if (Model.HasReadPrivilege()) this.gcMain.GridView.OptionsBehavior.Editable = false; if (this.SysModel.DefaultAddEmptyRow) { this.gcMain.GridView.OptionsNavigation.AutoFocusNewRow = true; this.gcMain.GridView.OptionsNavigation.EnterMoveNextColumn = true; this.gcMain.GridView.OptionsView.NewItemRowPosition = NewItemRowPosition.Bottom; this.gcMain.GridView.MouseDown += new MouseEventHandler(OnGridViewMouseDown); } if (this.LeftTreeViewEx != null || this.LeftGridEx != null) { if (this.gcMain is BandedGridControlEx) { (this.gcMain as BandedGridControlEx).OnParseGridDataCallBack += new GridControlEx.ParseGridDataEventHandler(OnGridViewParseGridDataCallBack); } else { this.gcMain.OnParseGridDataCallBack += new GridControlEx.ParseGridDataEventHandler(OnGridViewParseGridDataCallBack); } } if (this.gcMain != null) { this.gcMain.OnGridColumnCallDLL += new GridControlEx.GridColumnCallDLL(OnGridColumnCallDLL); } } private void AdapterObj_RowUpdated(object sender, SqlRowUpdatedEventArgs e) { } #region 当前表格的拖拽方法 /// /// 说明:判断是否需要绑定拖拽 /// 创建人:王一帆 /// 创建日期:2020-05-22 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializedragState() { if (!_gridColumns.Columns.Contains("dragflag")) return; //判断是否可拖拽 DataRow dragContainRow = this._gridColumns.Rows.Cast().FirstOrDefault(x => x["dragflag"] + "" == "1"); if (dragContainRow != null) { this.DetailOrderField = dragContainRow["fieldname"] + ""; gcMain.GridView.MouseDown += new MouseEventHandler(OnGridMouseDown); gcMain.GridView.MouseMove += new MouseEventHandler(OnGridMouseMove); gcMain.GridView.MouseUp += new MouseEventHandler(OnGridMouseUp); this.isDrag = true; //绑定值改变事件,拖拽后保存时判断列是否修改 if (this.gcMain is BandedGridControlEx) { (this.gcMain as BandedGridControlEx).GridControl.DataSourceChanged += (sender, e) => { LineStatus.Clear(); DataTable sourceTable = (this.gcMain as BandedGridControlEx).GridControl.DataSourceTable(); DataTable copyTable = sourceTable.Copy(); for (int i = 0; i < copyTable.Rows.Count; i++) { LineStatus.Add(sourceTable.Rows[i], copyTable.Rows[i]); } }; } else if (this.gcMain is TreeGridControlEx) { } else { this.gcMain.GridControl.DataSourceChanged += (sender, e) => { LineStatus.Clear(); DataTable sourceTable = this.gcMain.GridControl.DataSourceTable(); DataTable copyTable = sourceTable.Copy(); for (int i = 0; i < copyTable.Rows.Count; i++) { LineStatus.Add(sourceTable.Rows[i], copyTable.Rows[i]); } }; } } } /// /// 说明:设置当前基础档案或报表表格行高、行字体大小(默认微软雅黑) /// 创建人:王一帆 /// 创建日期:2020-06-11 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SetGridRowHeightAndFont() { if (!_gridColumns.Columns.Contains("FontSize") || _gridColumns.Rows.Count == 0) return; //判断是否有字体设置 DataRow GridRowFont = this._gridColumns.Rows.Cast().FirstOrDefault(x => x["FontSize"] + "" != null); int FontSize = string.IsNullOrEmpty(GridRowFont["FontSize"] + "") ? 0 : Convert.ToInt32(GridRowFont["FontSize"] + ""); if (FontSize > 0) { //this.gcMain.GridView.Appearance.Row.Font = new Font("微软雅黑", FontSize); this.gcMain.GridView.Appearance.Row.Font = new Font(this.gcMain.GridView.Appearance.Row.Font.FontFamily, FontSize); } if (SysModel.RowHeight > 0) { this.gcMain.GridView.OptionsView.RowAutoHeight = false; this.gcMain.GridView.ColumnPanelRowHeight = this.gcMain.GridView.RowHeight = SysModel.RowHeight; } } /// /// 说明:拖拽鼠标按下事件 /// 创建人:王一帆 /// 创建日期:2020-05-22 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void OnGridMouseDown(object sender, MouseEventArgs e) { try { if (e.Button == MouseButtons.Left) { isSortDrag = false; var _hit = gcMain.GridView.CalcHitInfo(e.Location); if (_hit.RowHandle >= 0) { dragRowsIndex = gcMain.GridView.GetSelectedRows(); // 复选框多选时,只允许从已选中行发起拖拽。 // 如果从未选中行拖拽,不移动已勾选行,避免拖拽对象和选中对象不一致。 if (dragRowsIndex != null && dragRowsIndex.Length > 1 && !dragRowsIndex.Contains(_hit.RowHandle)) { m_dragHandle = -1; isSortDrag = false; return; } m_dragHandle = _hit.RowHandle; m_mouseDownLocation = e.Location; } else { m_dragHandle = -1; } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 拖拽鼠标移动事件 /// /// private void OnGridMouseMove(object sender, MouseEventArgs e) { try { if (e.Button == MouseButtons.Left && m_dragHandle >= 0) { if (m_dragRowShadow == null) { double _x2 = Math.Pow((e.Location.X - m_mouseDownLocation.X), 2); double _y2 = Math.Pow((e.Location.Y - m_mouseDownLocation.Y), 2); double _d2 = Math.Sqrt(_x2 + _y2); if (_d2 > 3) { isSortDrag = true; //执行拖拽; this.BeginDrag(m_dragHandle); //var _info = (DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo)gv22.GetViewInfo(); //_info.GetGridRowInfo(0).CalcRectangle } } else { m_dragRowShadow.Location = new Point(m_dragRowShadow.Location.X, this.PointToScreen(e.Location).Y); } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 拖拽鼠标放开事件 /// /// private void OnGridMouseUp(object sender, MouseEventArgs e) { try { int startIndex = this.m_dragHandle; int endIndex = -1; if (m_dragRowShadow != null) { bool isMultiDrag = dragRowsIndex != null && dragRowsIndex.Length > 1; if (isMultiDrag) { bool hasOtherSort = gcMain.GridView.SortedColumns .Cast() .Any(x => !string.Equals(x.FieldName, DetailOrderField, StringComparison.OrdinalIgnoreCase)); if (hasOtherSort) { m_dragRowShadow.Close(); m_dragRowShadow.Dispose(); m_dragRowShadow = null; isSortDrag = false; m_dragHandle = -1; gcMain.GridView.Columns.ClearAllSort(); MessageUtil.Show("多选时不能存在其它列排序,已清除排序,请重新拖拽排序。"); return; } } var _hit = gcMain.GridView.CalcHitInfo(e.Location); this.EndDrag(_hit.RowHandle); endIndex = _hit.RowHandle; } if (!string.IsNullOrEmpty(DetailOrderField) && isSortDrag) { int sourceStartIndex = startIndex > 0 ? gcMain.GridView.GetDataSourceRowIndex(startIndex) : startIndex; int sourceEndIndex = endIndex > 0 ? gcMain.GridView.GetDataSourceRowIndex(endIndex) : endIndex; this.gcMain.gridControl.DataSourceTable().OrderBy(this.DetailOrderField, sourceStartIndex, sourceEndIndex); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 绑定拖拽 /// /// private void BeginDrag(int _handle) { var _info = (DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo)gcMain.GridView.GetViewInfo(); //_info.GetGridRowInfo(0).CalcRectangle Rectangle _bound = _info.GetGridRowInfo(_handle).Bounds; _bound.Location = this.PointToScreen(_bound.Location); m_dragRowShadow = new DragForm(_bound); m_dragRowShadow.Show(); } /// /// 停止拖拽 /// /// private void EndDrag(int _handle) { int[] selectSourceIndex = null; if (m_dragRowShadow != null) { m_dragRowShadow.Close(); m_dragRowShadow.Dispose(); m_dragRowShadow = null; DataTable sourceTable = this.gcMain.gridControl.DataSourceTable(); if (dragRowsIndex.Length > 1) { int _rowIndex = gcMain.GridView.GetDataSourceRowIndex(_handle); int[] selectRowsIndex = dragRowsIndex; selectSourceIndex = new int[selectRowsIndex.Length]; List selectRows = new List(); List newRowSelectRows = new List(); for (int i = 0; i < selectRowsIndex.Length; i++) { int sourceIndex = gcMain.GridView.GetDataSourceRowIndex(selectRowsIndex[i]); selectSourceIndex[i] = sourceIndex; selectRows.Add(sourceTable.Rows[sourceIndex]); } gcMain.gridControl.BeginUpdate(); foreach (DataRow row in selectRows) { DataRow newRow = sourceTable.NewRow(); newRow.ItemArray = row.ItemArray; LineStatus.Add(newRow, LineStatus[row]); LineStatus.Remove(row); newRowSelectRows.Add(newRow); } //移除目标行; int IntermediateRow = 0; for (int i = selectSourceIndex.Length - 1; i >= 0; i--) { ((DataTable)this.gcMain.gridControl.DataSource).Rows.RemoveAt(selectSourceIndex[i]); if (_handle > selectSourceIndex[i]) IntermediateRow++;//拖动行如果在目标行上面,拖动行在删除后,插入行要跟着删一行 } _handle = _handle - IntermediateRow; if (_handle >= 0) { foreach (DataRow row in newRowSelectRows) { sourceTable.Rows.InsertAt(row, _handle); //row.AcceptChanges(); //row.SetModified(); _handle += 1; } } else { foreach (DataRow row in newRowSelectRows) { sourceTable.Rows.Add(row); //row.AcceptChanges(); //row.SetModified(); } } } else { int _rowIndex = gcMain.GridView.GetDataSourceRowIndex(m_dragHandle); DataRow _row = ((DataTable)this.gcMain.gridControl.DataSource).Rows[_rowIndex]; DataRow insertRow = ((DataTable)this.gcMain.gridControl.DataSource).NewRow(); insertRow.ItemArray = _row.ItemArray; gcMain.gridControl.BeginUpdate(); ((DataTable)this.gcMain.gridControl.DataSource).Rows.RemoveAt(_rowIndex); LineStatus.Add(insertRow, LineStatus[_row]); LineStatus.Remove(_row); if (_handle > m_dragHandle) _handle = _handle - 1;//拖动行如果在目标行上面,拖动行在删除后,插入行的行号要减1 if (_handle >= 0) { DataTable screenTable = this.gcMain.GridView.GetGridViewFilteredAndSortedDataToDataTable(); DataTable AllTable = this.gcMain.gridControl.DataSourceTable(); //行数不同,为筛选状态。传入行的行号要设置为数据源中的行号 if (screenTable.Rows.Count != AllTable.Rows.Count) { DataRow dataRow = screenTable.Rows[_handle]; IEqualityComparer comparer = DataRowComparer.Default; DataRow dr = AllTable.Rows.Cast().Where(x => comparer.Equals(x, dataRow)).ToArray()[0]; int index = AllTable.Rows.IndexOf(dr); ((DataTable)this.gcMain.gridControl.DataSource).Rows.InsertAt(insertRow, index); gcMain.GridView.FocusedRowHandle = _handle; } else { //插入指定位置; ((DataTable)this.gcMain.gridControl.DataSource).Rows.InsertAt(insertRow, _handle); gcMain.GridView.FocusedRowHandle = _handle; } } else { //添加; ((DataTable)this.gcMain.gridControl.DataSource).Rows.Add(insertRow); gcMain.GridView.FocusedRowHandle = gcMain.GridView.RowCount - 1; } //insertRow.AcceptChanges(); //insertRow.SetModified(); } gcMain.gridControl.EndUpdate(); gcMain.GridView.ClearSelection(); } } private int GetDragEndRowIndex(DataTable sourceTab, int dragEndRowIndex, List selectRows, out bool isContain) { int returnIndex = 0; isContain = false; DataRow dragEndRow = sourceTab.Rows[dragEndRowIndex]; if (selectRows.Contains(dragEndRow)) { isContain = true; dragEndRowIndex = dragEndRowIndex - 1; if (dragEndRowIndex >= 0) { dragEndRow = sourceTab.Rows[dragEndRowIndex]; if (selectRows.Contains(dragEndRow)) { bool iscontain = false; returnIndex = GetDragEndRowIndex(sourceTab, dragEndRowIndex, selectRows, out iscontain); } else { returnIndex = dragEndRowIndex; } } else { returnIndex = -1; } } else { returnIndex = dragEndRowIndex; } return returnIndex; } #endregion /// /// 说明:初始化按钮状态 /// 创建人:龚宇超 /// 创建日期:2017-11-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeButtonState() { try { if (Model != null && Model.HasOperPrivilege()) { this.btnAttach.Visible = this.SysModel.AttachReveal; this.btnAdd.Enabled = this.SysModel.AddEnable; this.btnDel.Enabled = this.SysModel.DeleteEnable; this.btnSave.Enabled = this.gcMain.GridView.OptionsBehavior.Editable = this.SysModel.ModifyEnable && this.SysModel.CanEdit; this.btnImport.Enabled = this.bbi_import.Enabled = this.SysModel.ImportEnable; this.bbi_import.Visibility = VisibleOperPanel ? BarItemVisibility.Always : BarItemVisibility.Never; this.bbi_export.Enabled = this.SysModel.ExportEnable; this.pl_top_fix_search.Enabled = this.pl_top_search.Enabled = this.SysModel.SearchEnable; this.pl_buttom.Visible = this.VisibleOperPanel && (this.SysModel.AddEnable || this.SysModel.DeleteEnable || (this.SysModel.ModifyEnable && this.SysModel.CanEdit)); this.btnUpdate.Enabled = this.SysModel.ModifyEnable && this.SysModel.CanEdit; this.gcMain.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged); if (this.LeftGridEx != null) this.LeftGridEx.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged); this.gcMain.GridView.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor); } else { this.btnUpdate.Enabled=this.btnAdd.Enabled = this.btnDel.Enabled = this.btnSave.Enabled = this.bbi_import.Enabled = false; this.gcMain.GridView.OptionsBehavior.Editable = false; this.pl_buttom.Visible = false; } } catch (Exception ex) { LogHelper.Instance.WriteError(ex); throw; } } /// /// 说明:删除存储过程验证 /// 创建人:龚宇超 /// 创建日期:2017-11-10 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The row data. /// 1.允许删除,0.不允许删除 private int ValidateDeleteProc(DataRow rowData) { SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000); pMsg.Direction = ParameterDirection.Output; SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4); returnValue.Direction = ParameterDirection.ReturnValue; SqlParameter[] param = { new SqlParameter("@modid",SqlDbType.VarChar,20), new SqlParameter("@keyvalue",SqlDbType.VarChar,40), pMsg, returnValue }; param[0].Value = this.Model.ModuleCode; param[1].Value = rowData[this._parmaryKey]; BaseImpl.ExecProcedure("p_VerifyCanDelete", param); return Convert.ToInt32(returnValue.Value.ToString()); } /// /// 说明:检查可用条件 /// 创建人:龚宇超 /// 创建日期:2017-11-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The cond. /// The data row. /// true if XXXX, false otherwise. private bool ValidateCond(string cond, DataRow dataRow, string TableName = null, string ColumnName = null) { bool result = false; string condition = cond; try { if (string.IsNullOrWhiteSpace(cond)) { result = true;//如果值是空格或者空行,默认正确 } else { //cond = ReplaceHelper.ReplaceRowParam(dataRow, cond); cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(dataRow, cond); if (cond.StartsWith("@") || cond.StartsWith("!")) { result = "1".Equals(BaseImpl.GetDefaultValue(cond)); } else if (dataRow == null) { result = ReplaceHelper.EvalCond(cond); } else { result = ReplaceHelper.ReplaceRowParamCond(dataRow, cond); } } } catch (Exception ex) { //string Tips = string.Empty; //if (!string.IsNullOrWhiteSpace(TableName) && !string.IsNullOrWhiteSpace(ColumnName)) //{ // Tips = string.Format("{0}表中{1}字段{2},判断条件失败\r\n", TableName, ColumnName, condition); //} //else //{ // Tips = string.Format("条件为:{0}\r\n", condition); //} //Tips = "条件判断错误:\r\n" + Tips; //string Message = ErrorMessage.PromptErrorMessage(ex, "", Tips); ////MessageUtil.Show("条件判断错误:\r\n" + Tips); if (!ex.Message.Equals("该字符串未被识别为有效的布尔值。")) LogHelper.Instance.WriteError(ex); } return result; } /// /// 说明:检查按钮是否可用 /// 创建人:龚宇超 /// 创建日期:2017-11-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void ValidateButtonState(DataRow rowItem, bool isValidation = true) { if (rowItem == null && isValidation) { return; } try { Dictionary dataCaches = new Dictionary(); Task validateAddTask = dataCaches.AddTask(this, "ValidateAdd", new Task(() => { return ValidateCond(SysModel.AddCond, rowItem, "P_SystemDllTab", "addCond"); })); Task validateDelTask = dataCaches.AddTask(this, "ValidateDel", new Task(() => { return ValidateCond(SysModel.DeleteCond, rowItem, "P_SystemDllTab", "deleteCond"); })); Task validateSaveTask = dataCaches.AddTask(this, "ValidateSave", new Task(() => { return ValidateCond(SysModel.ModifyCond, rowItem, "P_SystemDllTab", "modifyCond"); })); Task validateImportTask = dataCaches.AddTask(this, "ValidateImport", new Task(() => { return ValidateCond(SysModel.ImportCond, rowItem, "P_SystemDllTab", "importCond"); })); Task validateExportTask = dataCaches.AddTask(this, "ValidateExport", new Task(() => { return ValidateCond(SysModel.ExportCond, rowItem, "P_SystemDllTab", "exportCond"); })); if (!Model.HasOperPrivilege()) { this.btnAdd.Enabled = this.btnDel.Enabled = this.btnDel.Enabled = false; } else { if (!dataCaches.GetValue(this, "ValidateAdd", out bool validateAdd)) { validateAdd = ValidateCond(this.SysModel.AddCond, rowItem, "P_SystemDllTab", "addCond"); } if (!dataCaches.GetValue(this, "ValidateDel", out bool validateDel)) { validateDel = ValidateCond(this.SysModel.DeleteCond, rowItem, "P_SystemDllTab", "deleteCond"); } if (!dataCaches.GetValue(this, "ValidateSave", out bool validateSave)) { validateSave = ValidateCond(this.SysModel.ModifyCond, rowItem, "P_SystemDllTab", "modifyCond"); } if (!dataCaches.GetValue(this, "ValidateImport", out bool validateImport)) { validateImport = ValidateCond(this.SysModel.ImportCond, rowItem, "P_SystemDllTab", "importCond"); } if (!dataCaches.GetValue(this, "ValidateExport", out bool validateExport)) { validateExport = ValidateCond(this.SysModel.ExportCond, rowItem, "P_SystemDllTab", "exportCond"); } this.btnAdd.Enabled = this.SysModel.AddEnable && validateAdd; // 判断添加权限 //this.btnAdd.Enabled = true; this.btnDel.Enabled = this.SysModel.DeleteEnable && validateDel; // 判断删除权限 this.btnSave.Enabled = this.SysModel.ModifyEnable && validateSave; // 判断修改权限 this.btnImport.Enabled = this.SysModel.ImportEnable && validateImport; // 判断导入权限 this.btnExport.Enabled = this.SysModel.ExportEnable && this.SysModel.ExportPermission && validateExport; // 判断导出权限 } } catch (Exception ex) { Console.WriteLine(ex.Message); } } /// /// 说明:添加表格数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void AddGridRecord() { if (!string.IsNullOrWhiteSpace(this.SysModel.PreSQL))//如果配置预新增界面则弹出 { GridDetailModel gridDetailModel = this.GridControlObj.Tag as GridDetailModel; DataRow parentDataRow = this.ParentGridEx != null ? this.ParentGridEx.GridView.GetFocusedDataRow() : null; FrmAddDynamic frmAddDynamic = new FrmAddDynamic(); frmAddDynamic.Text = this.SysModel.MenuText; frmAddDynamic.DynamicSql = this.SysModel.PreSQL; frmAddDynamic.ModuleCode = this.SysModel.ModeCode; frmAddDynamic.MaxHeight = this.SysModel.AddDynamicMaxHeight; frmAddDynamic.UnionKey = gridDetailModel.UnionValue; frmAddDynamic.UnionValue = parentDataRow != null && parentDataRow.Table.Columns.Contains(gridDetailModel.UnionParentField) ? parentDataRow[gridDetailModel.UnionParentField] + "" : ""; frmAddDynamic.keyValue = ""; if (frmAddDynamic.ShowDialog() == DialogResult.OK) { //this.RefreshColumn(); this.SearchObj.SearchLastGrid(); if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(null, null); } } } else { if (string.IsNullOrWhiteSpace(this.SysModel.MenuAddName)) { this.AddGridViewRecord(); } else { this.AddPanelViewRecord(); } } } /// /// 说明:直接表格添加数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void AddGridViewRecord() { try { DataTable dt = this.gcMain.GridControl.DataSource as DataTable; if (dt == null) { MessageUtil.Show("请查询后添加!"); return; } if (!SysModel.CanEdit) { MessageUtil.Show("表格不可编辑,增加失败"); return; } if (!(dt.Columns.Contains(ERPInfo.Instance.isAddRows))) { dt.Columns.Add(ERPInfo.Instance.isAddRows, typeof(String)); } GridView view = gcMain.GridView; view.InitNewRow += GridView_InitNewRow; view.AddNewRow(); view.UpdateCurrentRow(); view.ShowEditor(); view.InitNewRow -= GridView_InitNewRow; if (!string.IsNullOrEmpty(this.SysModel.addDetilOrderField)) { view.GridControl.DataSourceTable().OrderBy(this.SysModel.addDetilOrderField); } this.OnGridViewFocusedRowObjectChanged(view, null);//默认值添加完成后执行改变按钮状态(行改变事件) } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 表格行添加事件(AddNewRow时触发) /// /// /// private void GridView_InitNewRow(object sender, InitNewRowEventArgs e) { DataTable dt = this.gcMain.GridControl.DataSource as DataTable; string parentKey = string.Empty; string parentValue = string.Empty; if (LeftTreeViewEx != null && !this.SysModel.AnyAdd) { // 树结构添加数据 if (LeftTreeViewEx.TreeView.SelectedNode == null) { MessageUtil.Show(ResourceKeys.SelectedNodeIsNull); return; } if (LeftTreeViewEx.TreeView.SelectedNode.Nodes.Count > 0 && (!SystemInfo.Instance.AddingARootNode && !this.SysModel.selectLeaf)) { MessageUtil.Show(ResourceKeys.SelectedNodeContainNode); return; } //if (LeftTreeViewEx.TreeView.SelectedNode.Nodes.Count > 0) //{ // MessageUtil.Show(ResourceKeys.SelectedNodeContainNode); // return; //} parentKey = this.ParentKeyField; parentValue = LeftTreeViewEx.TreeView.SelectedNode.Name; } else if (LeftGridEx != null && !this.SysModel.AnyAdd) { // 表格添加 DataRow rowItem = LeftGridEx.GridView.GetFocusedDataRow(); if (LeftGridEx is TreeGridControlEx) { TreeListNode selectedNode = (LeftGridEx as TreeGridControlEx).TreeListObj.FocusedNode; if (selectedNode.HasChildren && (!SystemInfo.Instance.AddingARootNode && !this.SysModel.selectLeaf)) { MessageUtil.Show(ResourceKeys.SelectedNodeContainNode); return; } rowItem = LeftGridEx.GetViewFocusedDataRow(); } if (rowItem == null) { MessageUtil.Show(ResourceKeys.SelectRowIsNull); return; } //parentKey = !string.IsNullOrEmpty(DetailKeyField) ? DetailKeyField : this._parentKey; parentKey = this.ParentKeyField; parentValue = rowItem[ParentKeyField] + ""; } DataRow controlRowItem = null; if (!string.IsNullOrEmpty(this.ControlSql)) { controlRowItem = MainImpl.GetDataRowResult(this.ControlSql); } GridView view = gcMain.GridView; // 添加表格数据,此时数据还未保存. foreach (GridColumn column in this.gcMain.GridView.Columns) { GridColumnModel model = column.Tag as GridColumnModel; if (model == null) continue; if (model.FieldType == ControlType.LabTreeType && model.ValueMember.Equals(parentKey, StringComparison.OrdinalIgnoreCase)) { // 设置树节点关联值 view.SetRowCellValue(view.FocusedRowHandle, column, parentValue); } else if (model.AdditionalAssociations && model.ValueMember.Equals(parentKey, StringComparison.OrdinalIgnoreCase) && AdditionalAssociatedMain) { // 设置树节点关联值 view.SetRowCellValue(view.FocusedRowHandle, column, parentValue); } else if (model.FieldName.Equals(UnionKey, StringComparison.OrdinalIgnoreCase)) { // 设置关联模块关联值 view.SetRowCellValue(view.FocusedRowHandle, column, UnionValue); } else if (!string.IsNullOrEmpty(ParentKeyField) && this.ParentGridEx != null && model.FieldName.Equals(DetailKeyField, StringComparison.OrdinalIgnoreCase)) { DataRow SelectTheLine = this.ParentGridEx.GetViewFocusedDataRow(); if (this.ParentGridEx is TreeGridControlEx) SelectTheLine = this.ParentGridEx.GetViewFocusedDataRow(); // 设置上下结构关联值 string fieldValue = SelectTheLine != null ? SelectTheLine[ParentKeyField] + "" : string.Empty; view.SetRowCellValue(view.FocusedRowHandle, column, fieldValue); } else if (!string.IsNullOrEmpty(ParentKeyField) && this.ParentControlEx != null && model.FieldName.Equals(DetailKeyField, StringComparison.OrdinalIgnoreCase)) { // 设置上下结构关联值 string fieldValue = this.ParentControlEx.GetControlValue(ParentKeyField); view.SetRowCellValue(view.FocusedRowHandle, column, fieldValue); } else { string fieldValue = model.DefaultValue; string replaceKey = "{" + DetailKeyField + "}"; string replaceValue = "{" + ParentKeyField + "}"; if (SweepCodeRow != null && SweepCodeRow.Table.Columns.Contains(model.FieldName)) { //如果有扫码数据,优先以扫码数据为准 fieldValue = ReplaceHelper.ReplaceRowParam(SweepCodeRow, "{" + model.FieldName + "}"); } if (!string.IsNullOrEmpty(ParentKeyField) && fieldValue.Contains(replaceKey)) { fieldValue = fieldValue.Replace(replaceKey, replaceValue); } if (this.ParentGridEx != null) { DataRow SelectTheLine = this.ParentGridEx.GetViewFocusedDataRow(); fieldValue = ReplaceHelper.ReplaceRowParam(SelectTheLine, fieldValue); } fieldValue = BaseImpl.GetDefaultValue(fieldValue, "", Model.OtherParams()); if (Model.GetMaintabFocusedRow() != null) { fieldValue = ReplaceHelper.ReplaceRowParam(Model.GetMaintabFocusedRow(), fieldValue); } //if (ParentControlObj != null) //{ // fieldValue = ParentControlObj.ReplaceControlValue(fieldValue); //} //string fieldValue = BaseImpl.GetDefaultValue(model.DefaultValue, "", Model.OtherParams()); string parentDefault = (model.DefaultValue + "").Replace("{", "").Replace("}", ""); if (this.ParentGridEx != null && this.ParentGridEx.GridView.Columns.ColumnByName(parentDefault) != null) { object valueObj = this.ParentGridEx.GridView.GetRowCellValue(this.ParentGridEx.GridView.FocusedRowHandle, parentDefault); view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } else if (this.ParentGridEx != null && this.ParentGridEx is TreeGridControlEx) { TreeGridControlEx treeGridControlEx = this.ParentGridEx as TreeGridControlEx; if (treeGridControlEx.TreeListObj.Columns.ColumnByName(parentDefault) != null) { object valueObj = treeGridControlEx.GetViewFocusedDataRow()[parentDefault]; view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } } if (!string.IsNullOrEmpty(fieldValue)) { if (fieldValue.StartsWith("{") && fieldValue.EndsWith("}")) { if (fieldValue.StartsWith("{#") && this.SearchObj != null) { // 带条件值 fieldValue = this.SearchObj.GetControlValue(model.FieldName); if (!string.IsNullOrEmpty(fieldValue)) view.SetRowCellValue(view.FocusedRowHandle, column, fieldValue); } else { // 表格添加相同字段则直接使用值 fieldValue = fieldValue.Replace("{", "").Replace("}", ""); if (this.ParentGridEx != null && this.ParentGridEx.GridView.Columns.ColumnByName(fieldValue) != null) { object valueObj = this.ParentGridEx.GridView.GetRowCellValue(this.ParentGridEx.GridView.FocusedRowHandle, fieldValue); view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } else if (this.ParentGridEx != null && this.ParentGridEx is TreeGridControlEx) { TreeGridControlEx treeGridControlEx = this.ParentGridEx as TreeGridControlEx; if (treeGridControlEx.TreeListObj.Columns.ColumnByName(fieldValue) != null) { object valueObj = treeGridControlEx.GetViewFocusedDataRow()[fieldValue]; view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } } } } else { view.SetRowCellValue(view.FocusedRowHandle, column, fieldValue); } } else { // 检查是否配置有查询条件 if (this.SearchObj != null) { fieldValue = this.SearchObj.GetControlValue(model.FieldName); if (!string.IsNullOrEmpty(fieldValue)) view.SetRowCellValue(view.FocusedRowHandle, column, fieldValue); } // 表格添加相同字段则直接使用表格值 if (this.ParentGridEx != null && this.ParentGridEx.GridView.Columns.ColumnByName(model.FieldName) != null && this.SysModel.TakeMainTableValue) { object valueObj = this.ParentGridEx.GridView.GetRowCellValue(this.ParentGridEx.GridView.FocusedRowHandle, model.FieldName); view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } else if (this.ParentGridEx != null && this.ParentGridEx is TreeGridControlEx) { TreeGridControlEx treeGridControlEx = this.ParentGridEx as TreeGridControlEx; if (treeGridControlEx.TreeListObj.Columns.ColumnByName(model.FieldName) != null) { object valueObj = treeGridControlEx.GetViewFocusedDataRow()[model.FieldName]; view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } } // 右键调用赋值 if (this.DetailKeyField == model.FieldName) { view.SetRowCellValue(view.FocusedRowHandle, column, ParentKeyValue); } } // 右键菜单调用时赋值sql语句 if (controlRowItem != null && controlRowItem.Table.Columns.Contains(column.FieldName)) { DataRow dataRow = view.GetDataRow(view.FocusedRowHandle); if (dataRow != null && !(dataRow[ERPInfo.Instance.isAddRows] + "").Equals("1")) { view.SetRowCellValue(view.FocusedRowHandle, column, controlRowItem[column.FieldName]); } } } } this.BrowserAddRow = true; view.UpdateCurrentRow(); view.ShowEditor(); } /// /// 表格老版粘贴后新增行(和新增行相同的操作) /// /// /// private void GcMain_OnAfterPasting(object sender, EventArgs e) { AddGridViewRecord(); } /// /// 表格触发右键功能 /// /// /// private void OnAfterLinkCilkCall(object sender, EventArgs e) { string unioright = sender + ""; DataRow rightrowitem = this.GridControlObj.gridViewRightMenu.MenuTable.Rows.Cast().FirstOrDefault(x => (x["orderid"] + "").Equals(unioright)); GridRightMenuModel model = new GridRightMenuModel(rightrowitem); DataRow rowItem = this.GridControlObj.GetViewFocusedDataRow(); if (!string.IsNullOrWhiteSpace(model.MenuCond)) { //判断条件 DataRow row = this.gcMain.GridView.GetFocusedDataRow(); string cond = ReplaceHelper.ReplaceRowParam(row, model.MenuCond); bool condResult = ValidateCond(cond, null); if (!condResult) return; } CommonMenu menu = new CommonMenu(this.Model, this.SearchObj, this.gcMain); menu.Apply(rightrowitem); } /// /// 说明: /// 创建人:龚宇超 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The row item. private void AddGridViewRecord(DataRow curItem) { try { string parentKey = string.Empty; string parentValue = string.Empty; if (LeftTreeViewEx != null && !this.SysModel.AnyAdd) { // 树结构添加数据 if (LeftTreeViewEx.TreeView.SelectedNode == null) { MessageUtil.Show(ResourceKeys.SelectedNodeIsNull); return; } if (LeftTreeViewEx.TreeView.SelectedNode.Nodes.Count > 0) { MessageUtil.Show(ResourceKeys.SelectedNodeContainNode); return; } parentKey = this.ParentKeyField; parentValue = LeftTreeViewEx.TreeView.SelectedNode.Name; } else if (LeftGridEx != null && !this.SysModel.AnyAdd) { // 表格添加 DataRow rowItem = LeftGridEx.GridView.GetFocusedDataRow(); if (LeftGridEx is TreeGridControlEx) rowItem = LeftGridEx.GetViewFocusedDataRow(); if (rowItem == null) { MessageUtil.Show(ResourceKeys.SelectRowIsNull); return; } //parentKey = !string.IsNullOrEmpty(DetailKeyField) ? DetailKeyField : this._parentKey; parentKey = this.ParentKeyField; parentValue = rowItem[ParentKeyField] + ""; } DataRow controlRowItem = null; if (!string.IsNullOrEmpty(this.ControlSql)) { controlRowItem = MainImpl.GetDataRowResult(this.ControlSql); } GridView view = gcMain.GridView; // 添加表格数据,此时数据还未保存. foreach (GridColumn column in this.gcMain.GridView.Columns) { GridColumnModel model = column.Tag as GridColumnModel; if (model == null) continue; if (model.FieldType == ControlType.LabTreeType && model.ValueMember.Equals(parentKey, StringComparison.OrdinalIgnoreCase)) { // 设置树节点关联值 view.SetRowCellValue(view.FocusedRowHandle, column, parentValue); } else if (model.FieldName.Equals(UnionKey, StringComparison.OrdinalIgnoreCase)) { // 设置关联模块关联值 view.SetRowCellValue(view.FocusedRowHandle, column, UnionValue); } else if (!string.IsNullOrEmpty(ParentKeyField) && this.ParentGridEx != null && model.FieldName.Equals(DetailKeyField, StringComparison.OrdinalIgnoreCase)) { // 设置上下结构关联值 string fieldValue = this.ParentGridEx.GridView.GetRowCellValue(this.ParentGridEx.GridView.FocusedRowHandle, ParentKeyField) + ""; if (this.ParentGridEx is TreeGridControlEx) fieldValue = this.ParentGridEx.GetViewFocusedDataRow()[ParentKeyField] + ""; view.SetRowCellValue(view.FocusedRowHandle, column, fieldValue); } else { string fieldValue = BaseImpl.GetDefaultValue(model.DefaultValue); if (!string.IsNullOrEmpty(fieldValue)) { if (fieldValue.StartsWith("{") && fieldValue.EndsWith("}")) { // 表格添加相同字段则直接使用值 fieldValue = fieldValue.Replace("{", "").Replace("}", ""); if (this.ParentGridEx != null && this.ParentGridEx.GridView.Columns.ColumnByName(fieldValue) != null) { object valueObj = this.ParentGridEx.GridView.GetRowCellValue(this.ParentGridEx.GridView.FocusedRowHandle, fieldValue); view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } else if (this.ParentGridEx != null && this.ParentGridEx is TreeGridControlEx) { TreeGridControlEx treeGridControlEx = this.ParentGridEx as TreeGridControlEx; if (treeGridControlEx.TreeListObj.Columns.ColumnByName(fieldValue) != null) { object valueObj = treeGridControlEx.GetViewFocusedDataRow()[fieldValue]; view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } } } else { view.SetRowCellValue(view.FocusedRowHandle, column, fieldValue); } } else { // 检查是否配置有查询条件 if (this.SearchObj != null) { fieldValue = this.SearchObj.GetControlValue(model.FieldName); if (!string.IsNullOrEmpty(fieldValue)) view.SetRowCellValue(view.FocusedRowHandle, column, fieldValue); } // 表格添加相同字段则直接使用值 if (this.ParentGridEx != null && this.ParentGridEx.GridView.Columns.ColumnByName(model.FieldName) != null) { object valueObj = this.ParentGridEx.GridView.GetRowCellValue(this.ParentGridEx.GridView.FocusedRowHandle, model.FieldName); view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } else if (this.ParentGridEx != null && this.ParentGridEx is TreeGridControlEx) { TreeGridControlEx treeGridControlEx = this.ParentGridEx as TreeGridControlEx; if (treeGridControlEx.TreeListObj.Columns.ColumnByName(model.FieldName) != null) { object valueObj = treeGridControlEx.GetViewFocusedDataRow()[model.FieldName]; view.SetRowCellValue(view.FocusedRowHandle, column, valueObj); } } // 右键调用赋值 if (this.DetailKeyField == model.FieldName) view.SetRowCellValue(view.FocusedRowHandle, column, ParentKeyValue); } // 右键菜单调用时赋值sql语句 if (controlRowItem != null && controlRowItem.Table.Columns.Contains(column.FieldName)) { view.SetRowCellValue(view.FocusedRowHandle, column, controlRowItem[column.FieldName]); } } } view.UpdateCurrentRow(); view.ShowEditor(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:弹出添加数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void AddPanelViewRecord() { StaticControl.AddParentGrid = new KeyValuePair(Model.ModuleCode, gcMain); string mLeftFieldId = string.Empty; string mLeftFieldName = string.Empty; string mLeftTreeData = string.Empty; string mLeftGridData = string.Empty; try { if (this.SysModel.MenuAddName.Equals("Lskj.PubAdd4.dll", StringComparison.OrdinalIgnoreCase)) { string url = string.Format("pages/app/app.html?username={0}&password={1}&xtype={2}&dllcoid=", ERPInfo.Instance.UserName, ERPInfo.Instance.Password, this.SysModel.BsAdddllname); // 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号) string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.Model.FormText, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, this.Model.ModuleCode).Split('~'); string[] menuArgs = new string[] { "", "", url }; string[] args = defaultArgs.Concat(menuArgs).ToArray(); IForm form = FormHelper.LoadDllForm(ResourceDynamic.PubBrower, args); form.SubForm.WindowState = FormWindowState.Maximized; DialogResult result = form.SubForm.ShowDialog(); } else { // 弹出添加数据 if (LeftTreeViewEx != null && !this.SysModel.AnyAdd) { if (LeftTreeViewEx.TreeView.SelectedNode == null) { MessageUtil.Show(ResourceKeys.SelectedNodeIsNull); return; } if (LeftTreeViewEx.TreeView.SelectedNode.Nodes.Count > 0 && (!SystemInfo.Instance.AddingARootNode && !this.SysModel.selectLeaf)) { MessageUtil.Show(ResourceKeys.SelectedNodeContainNode); return; } if (this.SysModel.NewVer == 0) { string seqNo = BaseModuleImpl.GetBillSeq(LeftTreeViewEx.TreeView.SelectedNode.Name, this.Model.ModuleCode); if (string.IsNullOrWhiteSpace(seqNo)) { MessageUtil.Show(ResourceKeys.UpdateTreeNodeSeq); return; } } mLeftFieldId = LeftTreeViewEx.TreeView.SelectedNode.Name; mLeftFieldName = LeftTreeViewEx.TreeView.SelectedNode.Text; mLeftTreeData = LeftTreeViewEx.TreeView.SelectedNode.Tag + ""; } else if (LeftGridEx != null && !this.SysModel.AnyAdd) { DataRow row = LeftGridEx.GridView.GetFocusedDataRow(); if (LeftGridEx is TreeGridControlEx) { TreeListNode selectedNode = (LeftGridEx as TreeGridControlEx).TreeListObj.FocusedNode; if (selectedNode.HasChildren && (!SystemInfo.Instance.AddingARootNode && !this.SysModel.selectLeaf)) { MessageUtil.Show(ResourceKeys.SelectedNodeContainNode); return; } row = LeftGridEx.GetViewFocusedDataRow(); } if (row != null && _leftGridField != null) { mLeftFieldId = row[_leftGridField["fieldsqlid"] + ""] + ""; mLeftFieldName = row[_leftGridField["fieldsqlname"] + ""] + ""; mLeftGridData = row.ToJsonObject(); } else if (row != null && AdditionalAssociatedMain) { mLeftFieldId = row[ParentKeyField] + ""; mLeftFieldName = row[ParentKeyField] + ""; mLeftGridData = row.ToJsonObject(); } } // 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号) string unionKey = string.Empty, unionValue = string.Empty; string maintabFocusedRowJson = ""; if (!string.IsNullOrWhiteSpace(DetailKeyField) && !string.IsNullOrEmpty(ParentKeyValue)) { unionKey = DetailKeyField; unionValue = ParentKeyValue; } if (Model.GetMaintabFocusedRow() != null) { DataRow row = Model.GetMaintabFocusedRow(); if (row != null) { maintabFocusedRowJson = JsonUtil.ToJsonObject(row); } } // 上下结构底部添加数据处理 if (ParentGridEx != null) { DataRow row = ParentGridEx.GridView.GetFocusedDataRow(); if (this.ParentGridEx is TreeGridControlEx) row = this.ParentGridEx.GetViewFocusedDataRow(); if (row != null) { maintabFocusedRowJson = row.ToJsonObject(); unionKey = DetailKeyField; unionValue = !string.IsNullOrEmpty(ParentKeyField) && row.Table.Columns.Contains(ParentKeyField) ? row[ParentKeyField] + "" : row.Table.Columns.Contains(DetailKeyField) ? row[DetailKeyField] + "" : string.Empty; } } if (string.IsNullOrWhiteSpace(maintabFocusedRowJson) && this.SearchObj.SystemModel.maintabFocusedRow != null) { maintabFocusedRowJson = this.SearchObj.SystemModel.maintabFocusedRow.ToJsonObject(); } // 上下结构父容器为面板 if (ParentControlEx != null) { unionKey = DetailKeyField; unionValue = !string.IsNullOrEmpty(ParentKeyField) && this.ParentControlEx.FindControl(ParentKeyField) != null ? this.ParentControlEx.GetControlValue(ParentKeyField) : unionValue; } string controlValue = this.SysModel.AddReplaceConditionValue && this.SysModel.MenuAddName.ToLower().StartsWith("lskj.pubadd") ? this.SearchObj.GetAllControlValue() : ""; string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.Model.FormText, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, this.Model.ModuleCode).Split('~'); string[] menuArgs = { string.Format(ModuleArgs.PubAddArgs, ""), "0", "", mLeftFieldId, mLeftFieldName, this.ControlSql, "1", "", controlValue, mLeftGridData == null ? mLeftTreeData : mLeftGridData, unionKey, unionValue }; string[] maintabFocusedRowArg = { maintabFocusedRowJson }; string[] args = defaultArgs.Concat(menuArgs).ToArray(); args = args.Concat(maintabFocusedRowArg).ToArray(); IForm form = FormHelper.LoadDllForm((this.SysModel.MenuAddName).ToLower().StartsWith("lskj.pubadd") ? ResourceDynamic.PubAdd : this.SysModel.MenuAddName, args); //form.SubForm.Show(); DialogResult result = form.SubForm.ShowDialog(); if (result == DialogResult.OK) { //this.RefreshColumn(); this.SearchObj.SearchLastGrid(); if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(null, null); } } form.SubForm.Dispose(); form = null; } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:删除表格数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void DeleteGridRecord() { try { int[] rowids = this.gcMain.GridView.GetSelectedRows(); if (rowids == null || rowids.Length == 0) { MessageUtil.Show(ResourceKeys.SelectDeleteRows); } else { int rowhandle = rowids[0] - 1; string deleteCond = this.SysModel.DeleteCond; DialogResult result = MessageUtil.Show(string.Format(ResourceKeys.DeleteRows, rowids.Length), MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { string needDeletes = string.Empty; string noDeletes = string.Empty; ArrayList localDeletes = new ArrayList(); List delToPosts = new List(); foreach (int rowid in rowids) { DataRow rowData = this.gcMain.GridView.GetDataRow(rowid); bool canDelete = string.IsNullOrWhiteSpace(deleteCond); if (!canDelete) { // 检查条件 canDelete = ValidateCond(deleteCond, rowData, "P_SystemDllTab", "deleteCond"); } if (canDelete) { // 存储过程检查 int rValue = ValidateDeleteProc(rowData); if (rValue == 1) { if (rowData.RowState != DataRowState.Added) { needDeletes += string.Format("'{0}',", rowData[this._parmaryKey]); if (!string.IsNullOrWhiteSpace(SysModel.DelToPostSql) && !string.IsNullOrWhiteSpace(SysModel.SynchronizationToolSQL)) { delToPosts.Add(ReplaceHelper.ReplaceRowParam(rowData, SysModel.DelToPostSql).Trim()); } } else localDeletes.Add(rowid); } else { noDeletes += string.Format("[{0}]-->{1}\n", rowData[this._parmaryKey], ResourceKeys.DisDeleteCond); } } } if (!string.IsNullOrWhiteSpace(needDeletes)) { //删除触发的接口所要用到的参数,先把参数存到表中,同步工具去处理 if (!string.IsNullOrWhiteSpace(SysModel.DelToPostSql) && !string.IsNullOrWhiteSpace(SysModel.SynchronizationToolSQL)) { for (int i = 0; i < delToPosts.Count; i++) { string parametersql = delToPosts[i]; DataTable dt = BaseModuleImpl.GetDataTableResult(parametersql); foreach (DataRow dr in dt.Rows) { SqlHelper.ExecuteNonQuery(ReplaceHelper.ReplaceRowParam(dr, SysModel.SynchronizationToolSQL).Replace("''", "null")); } } } #region 删除前缓存接口数据 List apiHelpers = new List(); if (ApiHelper.IsExecEventApi(Interface.Api.OperateEvent.AfterModuleDataDelete, this.Model.ModuleCode, 0)) { string[] primaryValues = needDeletes.Trim(',').Split(','); for (int i = 0; i < primaryValues.Length; i++) { string primaryValue = primaryValues[i]; if (primaryValue.StartsWith("'") && primaryValue.EndsWith("'")) primaryValue = primaryValues[i].Substring(1, primaryValues[i].Length - 2); ApiHelper apiHelper = new ApiHelper(this.Model.ModuleCode, primaryValue, _parmaryKey, this.SysModel.MenuTable, 0); Interface.Api.ActionType actionType = Interface.Api.ActionType.Delete; apiHelper.OnEvent(Interface.Api.OperateEvent.AfterModuleDataDelete, actionType, false); apiHelpers.Add(apiHelper); } } #endregion int records = BaseModuleImpl.DeleteBaseGridData(this.SysModel.MenuTable, _parmaryKey, needDeletes); if (records > 0) { BaseImpl.ExecSqlValue(string.Format("delete from p_baseflowoper where keyvalue in ({0}) and modid='{1}'", needDeletes, this.Model.ModuleCode)); string hintMsg = ResourceKeys.DeleteSuccess; if (!string.IsNullOrWhiteSpace(noDeletes)) { hintMsg += string.Format("\n发现如下{0}:\n" + noDeletes, ResourceKeys.DisDeleteCond); } this.SearchObj.SearchLastGrid(); this.gcMain.GridView.SelectRowHandler(rowhandle); MessageUtil.Show(hintMsg); if (!string.IsNullOrEmpty(this.SysModel.addDetilOrderField))//删除后排序字段 { this.gcMain.gridControl.DataSourceTable().OrderBy(this.SysModel.addDetilOrderField); } #region 删除后调用api接口 string apiMsg = ""; foreach (ApiHelper apiHelper in apiHelpers) { apiHelper.OnEvent(); apiMsg = apiMsg + apiHelper.apiResutMsg; } if (!string.IsNullOrEmpty(apiMsg)) MessageUtil.Show(apiMsg); #endregion string primaryKey = (needDeletes.Replace("'", "")); primaryKey = primaryKey.Substring(0, primaryKey.Length - 1); LogUtil.WriteDebug(Model.ModuleCode, Model.FormText + "-->删除", Model.FormText + "[" + primaryKey + "]", Model.FormText, Model.ModuleId + ""); } else { MessageUtil.Show(ResourceKeys.DeleteFault); } } else { if (localDeletes.Count > 0) { // 删除选中且未保存的数据 for (int i = localDeletes.Count - 1; i >= 0; i--) { this.gcMain.GridView.DeleteRow((int)localDeletes[i]); } this.gcMain.GridView.SelectRowHandler(rowhandle); MessageUtil.Show(ResourceKeys.DeleteSuccess); if (!string.IsNullOrEmpty(this.SysModel.addDetilOrderField)) { this.gcMain.gridControl.DataSourceTable().OrderBy(this.SysModel.addDetilOrderField); } } else { MessageUtil.Show(ResourceKeys.DisDeleteCond); } } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:新版本删除数据 /// 创建人:龚宇超 /// 创建日期:2019-05-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void DeleteGridRecordByNew() { try { int[] rowids = this.gcMain.GridView.GetSelectedRows(); if (rowids == null || rowids.Length == 0) { MessageUtil.Show(ResourceKeys.SelectDeleteRows); } else { if (this.gcMain.IsDataNotSaved()) { DialogResult dialog = MessageUtil.Show("有数据未保存,是否保存", MessageBoxButtons.YesNo); if (dialog == DialogResult.Yes) { if (this.btnSave.Visible && this.btnSave.Enabled) { this.OnSaveClick(null, null); return; } else { MessageUtil.Show("没有保存权限,无法保存"); } } } string deleteCond = this.SysModel.DeleteCond; DialogResult result = MessageUtil.Show(string.Format(ResourceKeys.DeleteRows, rowids.Length), MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { ArrayList localDeletes = new ArrayList(); List mList = new List(); List delToPosts = new List(); foreach (int rowid in rowids) { DataRow rowData = this.gcMain.GridView.GetDataRow(rowid); bool canDelete = string.IsNullOrWhiteSpace(deleteCond); if (!canDelete) { // 检查条件 canDelete = ValidateCond(deleteCond, rowData, "P_SystemDllTab", "deleteCond"); } if (canDelete) { if (rowData.RowState != DataRowState.Added) { string fieldValue = rowData[this._parmaryKey] + ""; string sqlValue = string.Format("delete from {0} where {1} = '{2}'", this.SysModel.MenuTable, this._parmaryKey, rowData[this._parmaryKey] + ""); BaseSaveModel model = new BaseSaveModel { BaseSaveType = SaveType.Delete, BaseSql = sqlValue, KeyField = _parmaryKey, FieldValue = fieldValue, NewVer = this.SysModel.NewVer, MenuCode = this.Model.ModuleCode, TableName = this.SysModel.MenuTable }; mList.Add(model); if (!string.IsNullOrWhiteSpace(SysModel.DelToPostSql) && !string.IsNullOrWhiteSpace(SysModel.SynchronizationToolSQL)) { delToPosts.Add(ReplaceHelper.ReplaceRowParam(rowData, SysModel.DelToPostSql).Trim()); } } else { localDeletes.Add(rowid); } } } if (mList.Count > 0) { //删除触发的接口所要用到的参数,先把参数存到表中,同步工具去处理 if (!string.IsNullOrWhiteSpace(SysModel.DelToPostSql) && !string.IsNullOrWhiteSpace(SysModel.SynchronizationToolSQL)) { for (int i = 0; i < delToPosts.Count; i++) { string parametersql = delToPosts[i]; DataTable dt = BaseModuleImpl.GetDataTableResult(parametersql); foreach (DataRow dr in dt.Rows) { SqlHelper.ExecuteNonQuery(ReplaceHelper.ReplaceRowParam(dr, SysModel.SynchronizationToolSQL).Replace("''", "null")); } } } string apiReturnMsg = ""; bool success = BaseModuleImpl.SaveBaseGridData(mList, out apiReturnMsg); string hintMsg = "删除结果如下:\n"; foreach (BaseSaveModel item in mList) { hintMsg += string.IsNullOrEmpty(item.FaultMsg) ? "记录[" + item.FieldValue + "]删除成功.\n" : "记录[" + item.FieldValue + "]删除失败,原因:" + item.FaultMsg + "\n"; if (string.IsNullOrEmpty(item.FaultMsg)) { LogUtil.WriteDebug(Model.ModuleCode, Model.FormText + "-->删除", Model.FormText + "[" + item.FieldValue + "]", Model.FormText, Model.ModuleId + ""); } } this.SearchObj.SearchLastGrid(); MessageUtil.Show(hintMsg); if (!string.IsNullOrEmpty(apiReturnMsg)) MessageUtil.Show(apiReturnMsg); } else { if (localDeletes.Count > 0) { // 删除选中且未保存的数据 for (int i = localDeletes.Count - 1; i >= 0; i--) { this.gcMain.GridView.DeleteRow((int)localDeletes[i]); } MessageUtil.Show(ResourceKeys.DeleteSuccess); } else { MessageUtil.Show(ResourceKeys.DisDeleteCond); } } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:替换sql语句中的bmp字段 /// 创建人:龚宇超 /// 创建日期:2018-03-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The SQL value. /// System.String. private string ReplaceBmpField(string sqlValue) { if (this._gridAllColumns == null || string.IsNullOrEmpty(sqlValue)) return sqlValue; foreach (DataRow item in this._gridAllColumns.Rows) { string fieldName = item["fieldname"] + ""; //sqlValue = sqlValue.Replace(" ", "-").Replace("-", "").Replace(", ", ",").Replace(" ,", ","); sqlValue = sqlValue.Replace("," + fieldName + ",", ",").Replace("," + fieldName, " "); } return sqlValue; } /// /// 说明:获取固定菜单 /// 创建人:龚宇超 /// 创建日期:2018-02-08 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private ContextMenuStrip GetMenus() { ContextMenuStrip menu = new ContextMenuStrip(); ToolStripMenuItem tsmExport = new ToolStripMenuItem("导出Excel", null, OnTsmExportClick); menu.Items.AddRange(new ToolStripMenuItem[] { tsmExport }); return menu; } /// /// 说明:保存表格数据 /// 创建人:龚宇超 /// 创建日期:2017-10-23 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void SaveGridRecord(bool isErrorTips = true) { this.SaveResults = false; this.isSuccessfullySaved = false; string tableName = this.SysModel.MenuTable; //string Autogrowcolumn = BaseImpl.GetResult(string.Format("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='{0}' AND COLUMNPROPERTY(OBJECT_ID('{0}'),COLUMN_NAME,'IsIdentity')=1", tableName)) + ""; //DataTable DatabasePropertySheet = BaseImpl.GetDataTableResult(string.Format("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_name = '{0}'", tableName));//数据库属性表 string Autogrowcolumn = MainImpl.GetAutogrowcolumn(tableName); DataTable DatabasePropertySheet = MainImpl.GetDatabaseProperty(tableName); string SaveErrorMessage = "失败列表:\r\n"; if (string.IsNullOrEmpty(tableName)) { MessageUtil.Show(ResourceKeys.MenuTableNameIsNull); return; } List mList = new List(); DataRow[] modifiedRows = (gcMain.GridControl.DataSource as DataTable) .Rows .Cast() .Where(x => x.RowState == DataRowState.Modified || x.RowState == DataRowState.Added) .ToArray(); if (modifiedRows == null || modifiedRows.Length == 0) { MessageUtil.Show(ResourceKeys.UnUpdateData); return; } else { DataColumnCollection columns = BaseImpl.GetTableColumns(tableName).Columns; //Dictionary modifyThePosition = this.gcMain.modifyThePosition;//修改过的单元格 //DataTable screeningDt = this.gcMain.GridControl.DataSourceTable(); foreach (DataRow row in modifiedRows) { string updateSql = "update {0} set {1} where {2}='{3}';"; string insertSql = "insert into {0}({1}) values({2});"; string updateFields = string.Empty; string insertFields = string.Empty; string insertValues = string.Empty; BaseSaveModel model = new BaseSaveModel() { MenuCode = this.Model.ModuleCode, TableName = tableName, KeyField = _parmaryKey, NewVer = this.SysModel.NewVer }; // int theLineNumbers = screeningDt.Rows.IndexOf(row);//当前行的行号 //string[] columnNames = null; //if (modifyThePosition.ContainsKey(index))columnNames = modifyThePosition[theLineNumbers].Split(','); foreach (DataColumn col in columns) { // 区分大小写匹配列 DataRow hasContainRow = _gridColumns.Rows.Cast().FirstOrDefault(x => (x["fieldname"] + "").ToLower() == col.ColumnName.ToLower()); if (hasContainRow != null && col.ColumnName != _parmaryKey && !_disUpdateColumns.Contains(col.ColumnName) && Autogrowcolumn.ToLower() != col.ColumnName.ToLower()) { if (row.RowState == DataRowState.Modified && string.IsNullOrEmpty(SysModel.CustomColumnSQL)) { string newValue = string.Empty; string oldValue = string.Empty; if (isDrag) { newValue = row[col.ColumnName] + ""; oldValue = LineStatus[row][col.ColumnName] + ""; } else { oldValue = row[col.ColumnName, DataRowVersion.Original] + ""; newValue = row[col.ColumnName, DataRowVersion.Current] + ""; } //如果是修改状态,没有改变的值就不拼接,以免造成多人同时修改同一行不同列的值混乱情况 if (oldValue != newValue) { if ((col.DataType == typeof(DateTime)) && (row[col.ColumnName] + "" == "")) { updateFields += string.Format("[{0}]=null,", col.ColumnName); } else { if (col.DataType == typeof(Decimal) && string.IsNullOrWhiteSpace((row[col.ColumnName] + "").Replace("'", "''"))) { updateFields += string.Format("[{0}]='{1}',", col.ColumnName, 0); } else { updateFields += string.Format("[{0}]=N'{1}',", col.ColumnName, (row[col.ColumnName] + "").Replace("'", "''")); } } } } else if (row.RowState == DataRowState.Added || (row.RowState == DataRowState.Modified && !string.IsNullOrEmpty(SysModel.CustomColumnSQL))) { // 动态生成列,保存时默认全部为新增 string fieldValue = string.Empty; if (col.ColumnName == this.DetailKeyField && this.ParentGridEx != null) { // 处理关联值 DataRow rowItem = this.ParentGridEx.GetViewFocusedDataRow(); if (this.ParentGridEx is TreeGridControlEx) rowItem = this.ParentGridEx.GetViewFocusedDataRow(); if (rowItem.Table.Columns.Contains(this.ParentKeyField)) fieldValue = rowItem[this.ParentKeyField] + ""; else if (rowItem.Table.Columns.Contains(this.DetailKeyField)) fieldValue = rowItem[this.DetailKeyField] + ""; } else { fieldValue = (row[col.ColumnName] + "").Replace("'", "''"); } insertFields += "[" + col.ColumnName + "],"; if (!string.IsNullOrWhiteSpace(fieldValue)) { insertValues += col.DataType == typeof(DateTime) ? "'" + Convert.ToDateTime(fieldValue).ToString("yyyy-MM-dd HH:mm:ss") + "'," : "N'" + fieldValue + "',"; } else { if (col.DataType == typeof(Decimal) || col.DataType == typeof(Int32)) insertValues += "0,"; else if (col.DataType == typeof(DateTime)) insertValues += "NULL,"; else insertValues += "'',"; } } SaveErrorMessage = SaveErrorMessage + DatabaseFormatJudgment.SaveOrModifyBalidation(_gridColumns, DatabasePropertySheet, row, col, (row[col.ColumnName] + "").Replace("'", "''")); } } // 检查是否保存主键字段 if (row.RowState == DataRowState.Added && !insertFields.Contains($"[{(_parmaryKey)}]") && !"ID".Equals($"[{(_parmaryKey)}]", StringComparison.OrdinalIgnoreCase)) { // 跳过自动增长列处理 if (Autogrowcolumn.ToLower() != _parmaryKey.ToLower()) { insertFields += "[" + _parmaryKey + "],"; insertValues += "N'" + row[_parmaryKey] + "',"; } } updateFields = updateFields.TrimEnd(','); insertFields = insertFields.TrimEnd(','); insertValues = insertValues.TrimEnd(','); if (!string.IsNullOrEmpty(updateFields)) { model.FieldValue = row[_parmaryKey] + ""; model.BaseSaveType = SaveType.Update; model.BaseSql = string.Format(updateSql, tableName, updateFields, _parmaryKey, row[_parmaryKey]); } if (!string.IsNullOrEmpty(insertFields)) { model.BaseSaveType = SaveType.Add; model.FieldValue = row[_parmaryKey] + ""; model.BaseSql = string.Format(insertSql, tableName, insertFields, insertValues); } if (!string.IsNullOrWhiteSpace(model.BaseSql)) mList.Add(model); } try { if (mList.Count == 0) { MessageUtil.Show(ResourceKeys.UnUpdateData); return; } string retuenMsg = ""; string apiRetMsg = ""; // 批量保存数据v if (BaseModuleImpl.SaveBaseGridData(mList, out retuenMsg, out apiRetMsg)) { if (retuenMsg == "9") { if (MessageUtil.Show(mList[0].FaultMsg, MessageBoxButtons.YesNo) == DialogResult.Yes) { if (BaseModuleImpl.SaveBaseGridData(mList, "1")) { (gcMain.GridControl.DataSource as DataTable).AcceptChanges(); if (this.SearchObj != null) { this.SearchObj.SearchLastGrid(); } if (_leftGridSearchObj != null) { this._leftGridSearchObj.SearchGrid(); } if (SaveEvent != null) { SaveEvent(null); } if (isErrorTips) MessageUtil.Show(ResourceKeys.SaveSuccess); } } } else { this.SaveResults = true; this.isSuccessfullySaved = true; (gcMain.GridControl.DataSource as DataTable).AcceptChanges(); if (this.SearchObj != null) { this.SearchObj.SearchLastGrid(); } if (_leftGridSearchObj != null) { this._leftGridSearchObj.SearchGrid(); } if (SaveEvent != null) { SaveEvent(null); } if (isErrorTips && this.SysModel.SaveHint) MessageUtil.Show(ResourceKeys.SaveSuccess); if (!string.IsNullOrEmpty(apiRetMsg)) MessageUtil.Show(apiRetMsg); } } else { StringBuilder builder = new StringBuilder(); builder.Append("失败列表\r\n"); foreach (BaseSaveModel item in mList) { if (!string.IsNullOrEmpty(item.FaultMsg)) SaveErrorMessage += item.FaultMsg + "\r\n"; } LogHelper.Instance.WriteLog(builder.ToString()); MessageUtil.Show(SaveErrorMessage); //if (SaveErrorMessage.StartsWith("@") && false) //{ // //根据tipMsg中数据找到pMenu中对应的右键 // foreach (BarItemLink itemLink in pm_common.ItemLinks) // { // if (false) // { // ErrorRestriction errorRestriction = new ErrorRestriction(SaveErrorMessage, this.Model, this.SearchObj, itemLink); // DialogResult drr = errorRestriction.ShowDialog(); // errorRestriction.Dispose(); // } // } //} if (!isErrorTips) this.SearchObj.SearchLastGrid(); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } } /// /// 说明:保存树表格数据 /// 创建人:王一帆 /// 创建日期:2020-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SaveTreeRecord() { TreeGridControlEx treeMain = gcMain as TreeGridControlEx; string tableName = this.SysModel.MenuTable; if (string.IsNullOrEmpty(tableName)) { MessageUtil.Show(ResourceKeys.MenuTableNameIsNull); return; } List mList = new List(); DataRow[] modifiedRows = (treeMain.TreeListObj.DataSource as DataTable) .Rows .Cast() .Where(x => x.RowState == DataRowState.Modified || x.RowState == DataRowState.Added) .ToArray(); if (modifiedRows == null || modifiedRows.Length == 0) { MessageUtil.Show(ResourceKeys.UnUpdateData); return; } else { DataColumnCollection columns = BaseImpl.GetTableColumns(tableName).Columns; foreach (DataRow row in modifiedRows) { string updateSql = "update {0} set {1} where {2}='{3}';"; string insertSql = "insert into {0}({1}) values({2});"; string updateFields = string.Empty; string insertFields = string.Empty; string insertValues = string.Empty; BaseSaveModel model = new BaseSaveModel() { MenuCode = this.Model.ModuleCode, TableName = tableName, KeyField = _parmaryKey, NewVer = this.SysModel.NewVer }; foreach (DataColumn col in columns) { // 区分大小写匹配列 DataRow hasContainRow = _gridColumns.Rows.Cast().FirstOrDefault(x => x["fieldname"] + "" == col.ColumnName); if (hasContainRow != null && col.ColumnName != _parmaryKey && !_disUpdateColumns.Contains(col.ColumnName)) { if (row.RowState == DataRowState.Modified && string.IsNullOrEmpty(SysModel.CustomColumnSQL)) { if ((col.DataType == typeof(DateTime)) && (row[col.ColumnName] + "" == "")) { updateFields += string.Format("[{0}]=null,", col.ColumnName); } else { if (col.DataType == typeof(Decimal) && string.IsNullOrWhiteSpace((row[col.ColumnName] + "").Replace("'", "''"))) { updateFields += string.Format("[{0}]='{1}',", col.ColumnName, 0); } else { updateFields += string.Format("[{0}]='{1}',", col.ColumnName, (row[col.ColumnName] + "").Replace("'", "''")); } } } else if (row.RowState == DataRowState.Added || (row.RowState == DataRowState.Modified && !string.IsNullOrEmpty(SysModel.CustomColumnSQL))) { // 动态生成列,保存时默认全部为新增 string fieldValue = string.Empty; if (col.ColumnName == this.DetailKeyField && this.ParentGridEx != null) { // 处理关联值 DataRow rowItem = this.ParentGridEx.GridView.GetFocusedDataRow(); if (this.ParentGridEx is TreeGridControlEx) rowItem = this.ParentGridEx.GetViewFocusedDataRow(); if (rowItem.Table.Columns.Contains(this.ParentKeyField)) fieldValue = rowItem[this.ParentKeyField] + ""; else if (rowItem.Table.Columns.Contains(this.DetailKeyField)) fieldValue = rowItem[this.DetailKeyField] + ""; } else { fieldValue = (row[col.ColumnName] + "").Replace("'", "''"); } insertFields += "[" + col.ColumnName + "],"; if (!string.IsNullOrWhiteSpace(fieldValue)) { insertValues += col.DataType == typeof(DateTime) ? "'" + Convert.ToDateTime(fieldValue).ToString("yyyy-MM-dd HH:mm:ss") + "'," : "'" + fieldValue + "',"; } else { if (col.DataType == typeof(Decimal) || col.DataType == typeof(Int32)) insertValues += "0,"; else if (col.DataType == typeof(DateTime)) insertValues += "NULL,"; else insertValues += "'',"; } } } } updateFields = updateFields.TrimEnd(','); insertFields = insertFields.TrimEnd(','); insertValues = insertValues.TrimEnd(','); if (!string.IsNullOrEmpty(updateFields)) { model.FieldValue = row[_parmaryKey] + ""; model.BaseSaveType = SaveType.Update; model.BaseSql = string.Format(updateSql, tableName, updateFields, _parmaryKey, row[_parmaryKey]); } if (!string.IsNullOrEmpty(insertFields)) { model.BaseSaveType = SaveType.Add; model.FieldValue = row[_parmaryKey] + ""; model.BaseSql = string.Format(insertSql, tableName, insertFields, insertValues); } mList.Add(model); } try { // 批量保存数据 if (BaseModuleImpl.SaveBaseGridData(mList)) { (treeMain.TreeListObj.DataSource as DataTable).AcceptChanges(); if (this.SearchObj != null && _leftGridSearchObj != null) { this.SearchObj.SearchLastGrid(); this._leftGridSearchObj.SearchGrid(); } if (SaveEvent != null) { SaveEvent(null); } MessageUtil.Show(ResourceKeys.SaveSuccess); } else { StringBuilder builder = new StringBuilder(); builder.Append("失败列表\r\n"); foreach (BaseSaveModel item in mList) { if (!string.IsNullOrEmpty(item.FaultMsg)) builder.Append("原因:" + item.FaultMsg + "\r\n"); ; } LogHelper.Instance.WriteLog(builder.ToString()); MessageUtil.Show(builder.ToString()); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } } /// /// 说明:修改数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void UpdateGridRecord() { try { StaticControl.AddParentGrid = new KeyValuePair(Model.ModuleCode, gcMain); if (!string.IsNullOrWhiteSpace(this.SysModel.MenuAddName)) { string modifyCond = this.SysModel.ModifyCond; bool canUpdate = this.SysModel.ModifyEnable; DataRow selectRow = gcMain.GridView.GetFocusedDataRow(); if (selectRow == null) return; if (canUpdate) { if (!string.IsNullOrWhiteSpace(modifyCond)) { // 检查条件 canUpdate = ValidateCond(modifyCond, selectRow, "P_SystemDllTab", "modifyCond"); } } else { canUpdate = false; } if (this.SysModel.MenuAddName.Equals("Lskj.PubAdd4.dll", StringComparison.OrdinalIgnoreCase)) { string url = string.Format("pages/app/app.html?username={0}&password={1}&xtype={2}&idValue={3}&detail=1&dllcoid=", ERPInfo.Instance.UserName, ERPInfo.Instance.Password, this.SysModel.BsAdddllname, selectRow[this.ParmaryKey]); // 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号) string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.Model.FormText, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, this.Model.ModuleCode).Split('~'); string[] menuArgs = new string[] { "", "", url }; string[] args = defaultArgs.Concat(menuArgs).ToArray(); IForm form = FormHelper.LoadDllForm(ResourceDynamic.PubBrower, args); form.SubForm.WindowState = FormWindowState.Maximized; DialogResult result = form.SubForm.ShowDialog(); } else { // 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号) string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.Model.FormText, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, this.Model.ModuleCode).Split('~'); string[] menuArgs = { "", canUpdate ? "0" : "1", selectRow[_parmaryKey] + "" }; string[] args = defaultArgs.Concat(menuArgs).ToArray(); IForm form = FormHelper.LoadDllForm(ResourceDynamic.PubAdd, args); DialogResult result = form.SubForm.ShowDialog(); //RefreshColumn(); if (result == DialogResult.OK) { this.SearchObj.SearchLastGrid(); if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(null, null); } } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show("基础模块修改数据出错!" + Message); } } /// /// 说明:刷新数据前判断刷新表格列 /// 创建人:王一帆 /// 创建日期:2020-01-15 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void RefreshColumn() { try { foreach (GridColumn gridColum in this.GridControlObj.GridView.Columns) { GridColumnModel model = gridColum.Tag as GridColumnModel; if (model == null) continue; if (model.FieldType == ControlType.LabAutoCompleteValueParam) { RepositoryItemGridLookUpEdit lookupEdit = gridColum.ColumnEdit as RepositoryItemGridLookUpEdit; if (lookupEdit != null) { lookupEdit.DataSource = MainImpl.GetDataTableResult(model.SqlSource); } } } } catch (Exception ex) { LogHelper.Instance.WriteError(ex); } } /// /// 说明:导入表格数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void ImportGridRecord() { try { //取左边树结构或者表中的关键值 string leftField = _leftGridField != null ? _leftGridField["fieldname"] + "" : "SpeciesNo"; ; string leftValue = string.Empty; if (this.LeftGridEx != null && this.LeftGridEx.DataRowCount() > 0 && this._leftGridField != null) { leftValue = this.LeftGridEx.GridView.GetDataRow(LeftGridEx.GridView.FocusedRowHandle)[ParentKeyField] + ""; if (LeftGridEx is TreeGridControlEx) { leftValue = LeftGridEx.GetViewFocusedDataRow()[ParentKeyField] + ""; } } else if (this.LeftTreeViewEx != null && this.LeftTreeViewEx.TreeView.GetNodeCount(true) > 0 && this._leftGridField != null) { if (LeftTreeViewEx.TreeView.SelectedNode == null) { MessageUtil.Show("设置导入错误,未选中树节点"); return; } else { leftValue = LeftTreeViewEx.TreeView.SelectedNode.Tag + ""; } } else if (this.ParentGridEx != null && this.ParentGridEx is TreeGridControlEx) { TreeGridControlEx treeGridControlEx = this.ParentGridEx as TreeGridControlEx; if (treeGridControlEx.GetGridViewDataSource().Rows.Count > 0) { leftValue = treeGridControlEx.GetViewFocusedDataRow()[ParentKeyField] + ""; leftField = this.DetailKeyField; } } else if (this.ParentGridEx != null && this.ParentGridEx.DataRowCount() > 0) { leftValue = this.ParentGridEx.GridView.GetDataRow(ParentGridEx.GridView.FocusedRowHandle)[ParentKeyField] + ""; leftField = this.DetailKeyField; } else if (!string.IsNullOrEmpty(this.ParentKeyValue)) { leftField = this.ParentKeyField; leftValue = this.ParentKeyValue; } List ImportReturnName = this.SearchObj.getImportReturnValueControl(); List ImportReturnValue = new List(); if (ImportReturnName.Count > 0) { foreach (string item in ImportReturnName) { BaseUserControl baseUserControl = this.SearchObj.FindControl(item); string Value = ""; if (baseUserControl.Model.ImportReturnValue) { Value = BaseImpl.GetDefaultValue(baseUserControl.Model.Default); this.SearchObj.SetControlValue(item, Value); } else if (baseUserControl.Model.ImportCurrentValue) { Value = this.SearchObj.GetControlValue(item); } ImportReturnValue.Add(Value); } } //快速导入 if (SystemInfo.Instance.QuickImportMode) { bool ImportResults = this.gcMain.GridView.QuickImport(this.SysModel, _parmaryKey, leftField, leftValue, ImportReturnName, ImportReturnValue, this.ParentGridEx); // 刷新数据 if (ImportResults) { if (!string.IsNullOrWhiteSpace(this.SysModel.afterimportSql)) { string sql = this.SearchObj.ReplaceControlValue(this.SysModel.afterimportSql); string newResult = SqlHelper.ExecuteScalar(sql) + ""; } if (ImportReturnName.Count > 0) { this.SearchObj.SearchGrid(); } else { this.SearchObj.SearchLastGrid(); } } //GridColumnCollection gridColumns = this.gcMain.GridView.Columns; //DataTable NewTable = this.gcMain.GridControl.DataSourceTable(); //foreach (DataRow rowItem in ImportTable.Rows) //{ // DataRow newRow = NewTable.NewRow(); // foreach (GridColumn col in gridColumns) // { // if ("id".Equals(col.FieldName) || col.FieldName.Equals(this.ParmaryKey)) continue; // if (rowItem.Table.Columns.Contains(col.FieldName)) // { // // 列中是否包含对应字段,包含则使用值 // newRow[col.FieldName] = rowItem[col.FieldName]; // } // else // { // // 未包含字段,则使用控件默认值. // GridColumnModel model = col.Tag as GridColumnModel; // string fieldValue = BaseImpl.GetDefaultValue(model.DefaultValue); // if (!string.IsNullOrEmpty(fieldValue)) // { // newRow[col.FieldName] = fieldValue; // } // } // } // NewTable.Rows.Add(newRow); //} } else { FrmImport import = new FrmImport(this.SysModel.MenuTable, this.Model.ModuleCode, _parmaryKey, this.gcMain, this.SysModel.PrefixKey, leftField, leftValue, this.Model.FormText, this.SysModel.ConcatenatedPrefix); import.ParentGridEx = this.ParentGridEx; import.SearchObj = this.SearchObj; import.ImportReturnName = ImportReturnName; import.ImportReturnValue = ImportReturnValue; DialogResult result = import.ShowDialog(); if (result == DialogResult.OK) { if (!string.IsNullOrWhiteSpace(this.SysModel.afterimportSql)) { string sql = this.SearchObj.ReplaceControlValue(this.SysModel.afterimportSql); string newResult = SqlHelper.ExecuteScalar(sql) + ""; //if (!string.IsNullOrEmpty(newResult)) MessageUtil.Show(newResult); } // 刷新数据 if (ImportReturnName.Count > 0) { this.SearchObj.SearchGrid(); } else { this.SearchObj.SearchLastGrid(); } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show("基础档案导入错误!" + Message); } } /// /// 说明:导出表格数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void ExportGridRecord() { LogUtil.WriteDebug(this.Model.ModuleCode, "导出数据", this.SysModel.MenuText, "导出数据"); this.gcMain.ExportNameWithoutDate = SysModel.ExportNameWithoutDate; if (this.gcMain is TreeGridControlEx) { TreeGridControlEx treeControlEx = this.gcMain as TreeGridControlEx; treeControlEx.TreeListObj.ToExcelTreeList(this.Model.FormText); } else if (this.gcMain is BandedGridControlEx) { BandedGridControlEx bandedGridControEx = this.gcMain as BandedGridControlEx; bandedGridControEx.ToExcel(this.Model.FormText); } else { bool merger = gcMain.GridView.OptionsView.AllowCellMerge; this.gcMain.GridControl.ToExcel(this.Model.FormText, merger, GridCustomColumnStruct.BaseMainGridView + this.SysModel.FormKey); } } /// /// 说明:打印表格数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void PrintGridRecord() { PrintUtil.Print(this.gcMain.GridControl); } /// /// 说明:打印完成需要参数 /// 创建人:龚宇超 /// 创建日期:2018-07-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void GetPrintOtherParam() { //取得打印完成后的参数 if (this.SysModel.PrintSql.Contains("<<")) { string[] strs = this.SysModel.PrintSql.Split(new[] { ">>" }, 2, StringSplitOptions.None); _mainPrintSql = strs[1]; _printModeCond = strs[0].Replace("<<", ""); } if (!string.IsNullOrEmpty(_printModeCond) && _printModeCond.IndexOf(';') > 0) { string[] str = _printModeCond.Split(';'); DataRow item = AttachImpl.GetSystemModule(str[0]); string tableName = item["TableName"] + ""; string modetype = item["modType"] + ""; string comprefix = BaseImpl.GetColumnPrefix(tableName); string primaryKey = modetype == "1" ? BaseImpl.GetBasePrimaryKey(str[0]) : comprefix + "billdocument_id"; //表名,列前缀,主键字段,主键值,模块编号,主打印Sql _printSaveParams = new List() { tableName, comprefix, primaryKey, str[1], str[0], _mainPrintSql }; //判断是否直接打印 modetype 区别单据和基础档案模块 switch (modetype) { case "1": ModuleModel mode = new ModuleModel(MainImpl.GetSystemdllTab(str[0])); if (mode != null) _isExcPrint = mode.PrintType == 3; break; case "2": BaseAccraditationModel model = new BaseAccraditationModel(BillAuditImpl.GetPubAuditProperty(str[0])); if (model != null) _isExcPrint = model.BillPrintType == 3; break; } } } /// /// 传入模块号打印完成需要参数 /// private void GetPrintOtherParam(string ModeCond) { //取得打印完成后的参数 if (!string.IsNullOrEmpty(ModeCond)) { DataRow item = AttachImpl.GetSystemModule(ModeCond); string tableName = item["TableName"] + ""; string modetype = item["modType"] + ""; string comprefix = BaseImpl.GetColumnPrefix(tableName); string primaryKey = modetype == "1" ? BaseImpl.GetBasePrimaryKey(ModeCond) : comprefix + "billdocument_id"; //表名,列前缀,主键字段,主键值,模块编号,主打印Sql _printSaveParams = new List() { tableName, comprefix, primaryKey, "", ModeCond, _mainPrintSql }; //判断是否直接打印 modetype 区别单据和基础档案模块 switch (modetype) { case "1": ModuleModel mode = new ModuleModel(MainImpl.GetSystemdllTab(ModeCond)); if (mode != null) _isExcPrint = mode.PrintType == 3; break; case "2": BaseAccraditationModel model = new BaseAccraditationModel(BillAuditImpl.GetPubAuditProperty(ModeCond)); if (model != null) _isExcPrint = model.BillPrintType == 3; break; } } } #endregion #region public method public ModuleGridEx() { InitializeComponent(); this.OperShortMode = true; this.Disposed += OnModuleGridExDisposed; } /// /// 清理公共事件和全局右键引用,避免模块关闭后仍保留当前表格。 /// private void OnModuleGridExDisposed(object sender, EventArgs e) { this.Disposed -= OnModuleGridExDisposed; ReleaseResourcesForDispose(); } internal void ReleaseResourcesForDispose() { if (mModuleResourcesReleased) { return; } mModuleResourcesReleased = true; PrintUtil.OnAfterPrint -= OnReportPrintAfter; MyControl searchObj = SearchObj; SearchObj = null; if (searchObj != null) { searchObj.OnSearchBeforeCallBack -= OnSearchBeforeCallBack; searchObj.OnSearchAfterCallBack -= OnSearchAfterCallBack; searchObj.OnDataSourceBindCallBack -= OnMainSearchDataSourceBindCallBack; if (ReferenceEquals(StaticControl.RightMenuMyControl, searchObj)) { StaticControl.RightMenuMyControl = null; } searchObj.Dispose(); } try { if (gcMain != null) { if (ReferenceEquals(StaticControl.RightMenuGridView, gcMain.GridView)) { StaticControl.RightMenuGridView = null; } if (gcMain.GridView != null) { gcMain.GridView.FocusedRowObjectChanged -= OnGridViewFocusedRowObjectChanged; gcMain.GridView.ShowingEditor -= OnGridViewShowingEditor; gcMain.GridView.DoubleClick -= OnGridViewDoubleClick; gcMain.GridView.MouseDown -= OnGridViewMouseDown; gcMain.GridView.MouseDown -= OnGridMouseDown; gcMain.GridView.MouseMove -= OnGridMouseMove; gcMain.GridView.MouseUp -= OnGridMouseUp; } if (gcMain.CustomGroupBandEx != null) { gcMain.CustomGroupBandEx.GridView.FocusedRowObjectChanged -= OnGridViewFocusedRowObjectChanged; gcMain.CustomGroupBandEx.GridView.ShowingEditor -= OnGridViewShowingEditor; } if (gcMain.ParentControl != null && ReferenceEquals(gcMain.ParentControl, searchObj)) { gcMain.ParentControl = null; } gcMain.Model = null; gcMain.SysModel = null; } } catch { // A partially disposed DevExpress view must not stop module cleanup. } try { if (Model != null && Model.DataCaches != null) { Model.DataCaches.Remove(this); } } catch { // Cache cleanup must not interrupt control disposal. } OnSaveGridCallBack = null; AfterDeleteGridCallBack = null; RightGridCallBack = null; DetailRightGridCallBack = null; OnCloseCallback = null; AfterRefreshingCallBack = null; SaveEvent = null; OnExportCallBack = null; verifyDetailsTab = null; if (m_dragRowShadow != null) { m_dragRowShadow.Dispose(); m_dragRowShadow = null; } ButtonModeRightMenus.Clear(); RightButtons.Clear(); itemCommonList.Clear(); LineStatus.Clear(); _leftGridSearchObj = null; LeftTreeViewEx = null; LeftGridEx = null; SpecialLeftTable = null; ParentGridEx = null; ParentControlEx = null; ParentControlObj = null; TabObj = null; Model = null; SysModel = null; } /// /// 明细父表格点击后刷新明细按钮权限 /// /// public void ParentButtonState(DataRow rowItem) { if (rowItem == null) return; try { if (!Model.HasOperPrivilege()) { this.btnAdd.Enabled = this.btnDel.Enabled = this.btnDel.Enabled = false; } else { //获得所有的权限条件 string conditions = this.SysModel.AddCond + this.SysModel.DeleteCond + this.SysModel.ModifyCond + this.SysModel.ImportCond + this.SysModel.ExportCond; //替换固定字段 conditions = ReplaceHelper.ReplaceUserInfo(conditions); List conditionList = ReplaceHelper.GetParamFields(conditions); //判断传进来的行是否包含条件中的字段 bool isContains = false; foreach (string item in conditionList) { if (rowItem.Table.Columns.Contains(item.Replace("{", "").Replace("}", ""))) isContains = true; } //cond.StartsWith("@") || cond.StartsWith("!") if (isContains) { DataRow currentRow = this.gcMain.GridView.GetFocusedDataRow(); //把父表选中行和当前行都替换后在判断,避免传入行为null时,默认为true的情况 this.btnAdd.Enabled = this.SysModel.AddEnable && this.ValidateCond(ReplaceHelper.ReplaceRowParam(currentRow, ReplaceHelper.ReplaceRowParam(rowItem, this.SysModel.AddCond)), null, "P_SystemDllTab", "addCond"); // 判断添加权限 this.btnDel.Enabled = this.SysModel.DeleteEnable && this.ValidateCond(ReplaceHelper.ReplaceRowParam(currentRow, ReplaceHelper.ReplaceRowParam(rowItem, this.SysModel.DeleteCond)), null, "P_SystemDllTab", "deleteCond"); // 判断删除权限 this.btnSave.Enabled = this.SysModel.ModifyEnable && this.ValidateCond(ReplaceHelper.ReplaceRowParam(currentRow, ReplaceHelper.ReplaceRowParam(rowItem, this.SysModel.ModifyCond)), null, "P_SystemDllTab", "modifyCond"); // 判断修改权限 this.btnImport.Enabled = this.SysModel.ImportEnable && this.ValidateCond(ReplaceHelper.ReplaceRowParam(currentRow, ReplaceHelper.ReplaceRowParam(rowItem, this.SysModel.ImportCond)), null, "P_SystemDllTab", "importCond"); // 判断导入权限 this.btnExport.Enabled = this.SysModel.ExportEnable && this.ValidateCond(ReplaceHelper.ReplaceRowParam(currentRow, ReplaceHelper.ReplaceRowParam(rowItem, this.SysModel.ExportCond)), null, "P_SystemDllTab", "exportCond") && this.SysModel.ExportPermission; // 判断导出权限 } } } catch (Exception) { } } /// /// 说明:初始化控件 /// 创建人:龚宇超 /// 创建日期:2017-09-12 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块p_systemdlltab相关数据 public void InitializeControl(ModuleModel sysModel, DynamicModel model) { try { if (sysModel != null && model != null) { this.SysModel = sysModel; this.Model = model; this.gcMain.DisableFieldSources = this.SysModel.DisableFieldSources; this.gcMain.UpdateColumns = this.SysModel.UpdateColumns; //if (this.Model is DynamicModuleDetailModelInfo) //{ // DynamicModuleDetailModelInfo dynamic = this.Model as DynamicModuleDetailModelInfo; // this.ControlSql = dynamic.ControlSql; //} Dictionary dataCaches = Model != null ? Model.DataCaches : null; if (!dataCaches.GetValue(this, "BasePrimaryKey", out string parmaryKey)) { parmaryKey = BaseImpl.GetBasePrimaryKey(this.Model.ModuleCode);//获取主键 } this._parmaryKey = this.ParmaryKey = parmaryKey; if (!dataCaches.GetValue(this, "CustomQueryFields", out _queryTable)) { _queryTable = BaseModuleImpl.GetCustomQueryFields(this.SysModel.CondKey);//加载自定义配置字段 } if (!dataCaches.GetValue(this, "ColumnPrefix", out this.SysModel.PrefixKey)) { this.SysModel.PrefixKey = BaseImpl.GetColumnPrefix(sysModel.MenuTable);//获取列前缀 } if (!dataCaches.GetValue(this, "SchemesList", out this._schemesTable)) { this._schemesTable = BaseModuleImpl.GetSchemesList(this.Model.ModuleId);//获取高级查询条件模版 } this.InitializeQueryCondition(); if (!dataCaches.GetValue(this, "BaseGridColumns", out this._gridColumns)) { this._gridColumns = BaseModuleImpl.GetBaseGridColumns(this.Model.ModuleCode); } if (!dataCaches.GetValue(this, "BaseGridAllColumns", out this._gridAllColumns)) { this._gridAllColumns = BaseModuleImpl.GetBaseGridAllColumns(this.Model.ModuleCode); } if (!dataCaches.GetValue(this, "SaveCondTab", out this.SaveCondTab)) { this.SaveCondTab = BaseModuleImpl.GetClientCond(this.Model.ModuleCode); } //if (this.SearchObj != null) //{ // this.SearchObj.SystemModel = sysModel; //} //禁用条件 if (this.SysModel.ForbiddenCondition) { this.pl_top_search.Visible = false; } if (this._gridColumns != null && this._gridColumns.Rows.Count > 0) { this._nullFields = this._gridColumns.Select("nullable=1"); this._leftGridField = this._gridColumns.Select("fieldsqlTag=3").FirstOrDefault(); //DataRow dr = this._gridColumns.Select("username='机构编号'").FirstOrDefault(); } this.InitializeCommonOperation(); this.InitializePrint(); this.InitializeButtonState(); this.InitializeGridView(); this.GetPrintOtherParam(); this.SearchObj.SetGridControlEx(this.gcMain); // 因创建条件时还GridView还未确定,需确定后在进行绑定 //修改条件 this.gcMain.ModifyCond = this.SysModel.ModifyCond; //主键 this.gcMain.MultiplePrimary = parmaryKey; //合计是否只显示行数 this.gcMain.TotalQuantity = this.SysModel.TotalQuantity; //判断是否禁用排序和筛选 if (!string.IsNullOrWhiteSpace(this.SysModel.HeaderSortCriteria)) { this.gcMain.GridView.OptionsCustomization.AllowFilter = this.gcMain.GridView.OptionsCustomization.AllowSort = ValidateCond(this.SysModel.HeaderSortCriteria, null); } // 常用工具 this.InitializeCommonTool(); if (SysModel.isLeftRightMode) this.pl_top_right.Visible = false; this.gcMain.OnNewLine += new GridControlEx.ModuleAddLine(AddGridRows); //隐藏按钮,改变pl_top_right宽度,重新计算按钮坐标(显示比列放大的话,左侧条件可能会别遮住,需要减去宽度后重新算坐标) this.CalculateCoordinates(); //设置上方按钮形式的右键 InitializeUpperRightMenu(); //绑定老版粘贴回调新增行事件 this.gcMain.OnAfterPasting += GcMain_OnAfterPasting; //触发右键回调 this.gcMain.OnAfterLinkCilk += OnAfterLinkCilkCall; if (!string.IsNullOrWhiteSpace(this.SysModel.SelectDisplayColumn)) { //this.gcMain.GridView.CustomColumnDisplayText += GridView_CustomColumnDisplayText; this.gcMain.GridView.CustomDrawCell += OnGridViewCustomDrawCell; } if (this.SysModel.IgnoreTab) { this.gcMain.IgnoreTab = this.SysModel.IgnoreTab; } //判断是否隐藏数据导入按钮 string[] authorizedPersonnel = SysModel.ImportPermissions.Split(',');//有导入权限的人员 this.btnImport.Enabled = false; if (string.IsNullOrWhiteSpace(SysModel.ImportPermissions) || Array.IndexOf(authorizedPersonnel, ERPInfo.Instance.UserName) != -1 || ERPInfo.Instance.UserName.Equals("管理员")) { this.btnImport.Enabled = true; } if (!string.IsNullOrEmpty(SysModel.PreSQL))//动态表格只保留新增 { this.dpbTools.Visible = this.btnDel.Visible = this.btnUpdate.Visible = this.btnSave.Visible = this.btnImport.Visible = this.btnExport.Visible = this.btnPrint.Visible = false; this.btnAdd.Location = new Point(this.pl_buttom.Width - this.btnAdd.Width - 5, this.btnAdd.Location.Y); } this.SetScanEvent(); this.ValidateButtonState(null, false); if (SystemInfo.Instance.TabAddLine || this.SysModel.EnterToNextRow) { this.gcMain.GridView.KeyDown += OnGcMain_KeyDown; } if (!string.IsNullOrWhiteSpace(this.SysModel.SweepCodeSql)) { this.pl_SweepCode.Visible = true; this.txt_SweepCode.KeyDown += Txt_SweepCode_KeyDown; } } //按钮翻译 //this.ButtonTranslation(); } catch (Exception ex) { //throw new Exception("经过进一步包装的异常", ex); // throw; string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } private void Txt_SweepCode_KeyDown(object sender, KeyEventArgs e) { try { if (e.KeyCode == Keys.Enter) { this.SweepCodeRow = null; string text = this.txt_SweepCode.Text; string Sql = ReplaceHelper.ReplaceParamToValue(ReplaceHelper.ReplaceUserInfo(this.SysModel.SweepCodeSql), "{keyvalue}", text); DataTable dataTable = SqlHelper.ExecuteDataTable(Sql); if (dataTable == null || dataTable.Rows.Count == 0) return; foreach (DataRow item in dataTable.Rows) { this.SweepCodeRow = item; this.AddGridViewRecord(); } this.txt_SweepCode.Text = ""; if (btnSave.Enabled) { this.OnSaveClick(null, null); } this.txt_SweepCode.Focus(); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } finally { this.SweepCodeRow = null; } } /// /// 获取数据源缓存 /// /// /// /// public void GetDataCaches(Dictionary cachesDic) { //获取通用数据 Task sysModelTask = cachesDic.GetTask(this, "SysModel"); Task dynamicModelTask = cachesDic.GetTask(this, "DynamicModel"); ModuleModel sysModel = sysModelTask.Result; DynamicModel dynamicModel = dynamicModelTask.Result; if (sysModel != null && dynamicModel != null) { Task basePrimaryKeyTask = cachesDic.AddTask(this, "BasePrimaryKey", new Task(() => { return BaseImpl.GetBasePrimaryKey(dynamicModel.ModuleCode);//获取主键 })); Task customQueryFieldsTask = cachesDic.AddTask(this, "CustomQueryFields", new Task(() => { return BaseModuleImpl.GetCustomQueryFields(sysModel.CondKey);//加载自定义配置字段 })); Task columnPrefixTask = cachesDic.AddTask(this, "ColumnPrefix", new Task(() => { return BaseImpl.GetColumnPrefix(sysModel.MenuTable);//获取列前缀 })); Task schemesListTask = cachesDic.AddTask(this, "SchemesList", new Task(() => { return BaseModuleImpl.GetSchemesList(dynamicModel.ModuleId);//获取高级查询条件模版 })); // 搜索区域与当前模块共享同一个模块配置任务,避免再次查询模块信息。 cachesDic.AddTask(pl_top_search, "SysModel", sysModelTask); //Task searchBaseGridRightMenusTask = cachesDic.AddTask(pl_top_search, "BaseGridRightMenus", new Task(() => //{ // return BaseModuleImpl.GetBaseGridRightMenus(dynamicModel.ModuleCode, ModuleType.MrpClickBtn); //})); Task fixedQueryFieldsTask = cachesDic.AddTask(this, "FixedQueryFields", new Task(() => { return BaseModuleImpl.GetFixedQueryFields(dynamicModel.ModuleCode);//加载固定查询条件 })); Task baseGridAllColumnsTask = cachesDic.AddTask(this, "BaseGridAllColumns", new Task(() => { return BaseModuleImpl.GetBaseGridAllColumns(dynamicModel.ModuleCode); })); Task saveCondTabTask = cachesDic.AddTask(this, "SaveCondTab", new Task(() => { return BaseModuleImpl.GetClientCond(dynamicModel.ModuleCode); })); Task baseGridColumnsTask = cachesDic.AddTask(this, "BaseGridColumns", new Task(() => { return BaseModuleImpl.GetBaseGridColumns(dynamicModel.ModuleCode); })); //设置表格列 string customColumKey = GridCustomColumnStruct.BaseMainGridView + sysModel.FormKey; cachesDic.AddTask(gcMain, "DynamicModel", dynamicModelTask); gcMain.GetDataCaches(cachesDic, customColumKey); //GetPrintOtherParam Task printTemp70Task = cachesDic.AddTask(this, "PrintTemp70", new Task(() => { return BaseImpl.GetPrintTemp70(dynamicModel.ModuleCode); })); Task baseGridRowColorsTask = cachesDic.AddTask(this, "BaseGridRowColors", new Task(() => { return BaseModuleImpl.GetBaseGridRowColors(dynamicModel.ModuleCode); })); Task baseGridRightMenusTask = cachesDic.AddTask(this, "BaseGridRightMenus", new Task(() => { return BaseModuleImpl.GetBaseGridRightMenus(dynamicModel.ModuleCode); })); //GetPrintOtherParam(); // 常用工具 Task commonToolGridRightMenusTask = cachesDic.AddTask(this, "CommonToolGridRightMenus", new Task(() => { return BaseModuleImpl.GetBaseGridRightMenus(dynamicModel.ModuleCode, ModuleType.BaseModuleAdd); })); //ValidateButtonState if (dynamicModel.HasOperPrivilege()) { Task validateAddTask = cachesDic.AddTask(this, "ValidateAdd", new Task(() => { return ValidateCond(sysModel.AddCond, null, "P_SystemDllTab", "addCond"); })); Task validateDelTask = cachesDic.AddTask(this, "ValidateDel", new Task(() => { return ValidateCond(sysModel.DeleteCond, null, "P_SystemDllTab", "deleteCond"); })); Task validateSaveTask = cachesDic.AddTask(this, "ValidateSave", new Task(() => { return ValidateCond(sysModel.ModifyCond, null, "P_SystemDllTab", "modifyCond"); })); Task validateImportTask = cachesDic.AddTask(this, "ValidateImport", new Task(() => { return ValidateCond(sysModel.ImportCond, null, "P_SystemDllTab", "importCond"); })); Task validateExportTask = cachesDic.AddTask(this, "ValidateExport", new Task(() => { return ValidateCond(sysModel.ExportCond, null, "P_SystemDllTab", "exportCond"); })); } //Task searchSourceTable = cachesDic.AddTask(this, "SearchSourceTable", new Task(() => //{ // DataTable dataTable = null; // MyControl searchObj = searchObjTask.Result; // string sqlValue = sysModel.MenuSql; // if (!string.IsNullOrWhiteSpace(sqlValue)) // { // sqlValue = ReplaceHelper.ReplaceUserInfo(sqlValue); // sqlValue = ReplaceHelper.ReplaceWhereCond(sqlValue); // sqlValue = searchObj.SetSearchSqlValue(sqlValue, true, true); // //sqlValue = MainImpl.GetDefaultValue(sqlValue, ParentKey, OtherParams); // sqlValue = BaseImpl.GetDefaultValue(sqlValue); // // 处理图片 // //if (gcMain != null && gcMain.ImageList != null && gcMain.ImageList.Count > 0) // //{ // // foreach (string item in gcMain.ImageList) // // { // // sqlValue = sqlValue.Replace(string.Format(",{0}", item), "").Replace(string.Format("{0},", item), ""); // // } // //} // try // { // dataTable = SqlHelper.ExecuteDataTable(sqlValue); // } // catch (Exception ex) // { // Console.WriteLine(ex.Message); // } // dataTable = BaseImpl.GetDataTableResult(sqlValue); // } // return dataTable; //})); } } /// /// 说明:设置扫码控件事件方法 /// 创建人:王一帆 /// 创建日期:2021-11-18 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SetScanEvent() { if (this.SearchObj != null) { BaseUserControl[] controls = this.SearchObj.FindControls(ControlType.LabPcSacn); controls = controls.Length > 0 ? controls : this.SearchObj.FindControls(ControlType.LabPcSacn); if (controls != null && controls.Length > 0) { // 为第一个扫码控件绑定回车事件 this._scanEdit = controls[0] as LabelTextEdit; if (this._scanEdit != null) { this._scanEdit.TabIndex = 1; this._scanEdit.TextEdit.KeyDown += new KeyEventHandler(OnScanTextEditKeyDown); this._scanEdit.Focus(); this._scanEdit.TextEdit.Focus(); } } } } #endregion #region protected event /// /// 说明:扫码模块回车处理 /// 创建人:王一帆 /// 创建日期:2021-11-18 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnScanTextEditKeyDown(object sender, KeyEventArgs e) { try { if (e.KeyCode == Keys.Enter) { } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:数据导入 /// 创建人:龚宇超 /// 创建日期:2017-09-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnImportItemClick(object sender, ItemClickEventArgs e) { try { this.ImportGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:数据导出 /// 创建人:龚宇超 /// 创建日期:2017-09-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnExportItemClick(object sender, ItemClickEventArgs e) { try { this.ExportGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:所有数据导出(包含明细) /// 创建人:王一帆 /// 创建日期:2021-04-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnAllExportItemClick(object sender, ItemClickEventArgs e) { try { if (OnExportCallBack != null) { LogUtil.WriteDebug(this.Model.ModuleCode, "导出数据", this.SysModel.MenuText, "导出所有数据"); OnExportCallBack(this, e); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:常规打印 /// 创建人:龚宇超 /// 创建日期:2017-09-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnNormalPrintItemClick(object sender, ItemClickEventArgs e) { try { this.PrintGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:帮助文档 /// 创建人:龚宇超 /// 创建日期:2017-09-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. /// protected void OnWordItemClick(object sender, ItemClickEventArgs e) { } /// /// 说明:模版打印 /// 创建人:龚宇超 /// 创建日期:2017-09-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnCustomPrintItemClick(object sender, ItemClickEventArgs e) { string printFile = e.Item.Tag + ""; string printPath = PubUtil.PrintFileAbsolutelyPath; if (!File.Exists(printPath)) { MessageUtil.Show(ResourceKeys.NotFoundPrintFile); return; } DataRow dataRow = gcMain.GetViewFocusedDataRow(); if (dataRow == null) { MessageUtil.Show(ResourceKeys.SelectRowIsNull); return; } try { string ids = string.Empty; string tmpSql = ReplaceHelper.ReplaceUserInfo(this.SysModel.PrintSql); string tmpSql1 = ReplaceHelper.ReplaceUserInfo(this.SysModel.PrintSql1); string tmpSql2 = ReplaceHelper.ReplaceUserInfo(this.SysModel.PrintSql2); tmpSql = this.SearchObj.ReplaceParentControlValue(tmpSql); tmpSql1 = this.SearchObj.ReplaceParentControlValue(tmpSql1); tmpSql2 = this.SearchObj.ReplaceParentControlValue(tmpSql2); tmpSql = ReplaceHelper.ReplaceRowParam(dataRow, tmpSql); tmpSql1 = ReplaceHelper.ReplaceRowParam(dataRow, tmpSql1); tmpSql2 = ReplaceHelper.ReplaceRowParam(dataRow, tmpSql2); if (this.LeftTreeViewEx != null || this.LeftGridEx != null) { string nodeKey = string.Empty; if (this.LeftTreeViewEx != null) { nodeKey = this.LeftTreeViewEx.GetSelectNodeValue(); ids = LeftTreeViewEx.GetCheckValues(); } if (this.LeftGridEx != null) { nodeKey = this.LeftGridEx.GetViewFocusedDataRow()[ParentKeyField] + ""; if (LeftGridEx is TreeGridControlEx) nodeKey = LeftGridEx.GetViewFocusedDataRow()[ParentKeyField] + ""; } nodeKey = string.IsNullOrEmpty(ids) ? nodeKey : ids; // select语句追加条件 tmpSql = ReplaceHelper.ReplaceTreeViewParentKeyCond(tmpSql, nodeKey); tmpSql1 = ReplaceHelper.ReplaceTreeViewParentKeyCond(tmpSql1, nodeKey); tmpSql2 = ReplaceHelper.ReplaceTreeViewParentKeyCond(tmpSql2, nodeKey); } //主Sql string mainSql = string.Empty; List tmpSqls = new List(); if (_printSaveParams != null && _printSaveParams.Count > 0) { _printSaveParams[5] = mainSql = ReplaceHelper.ReplaceRowParam(dataRow, _mainPrintSql); _printSaveParams[3] = dataRow[_printSaveParams[2]] + ""; tmpSqls.Add(mainSql); tmpSqls.Add(tmpSql1); tmpSqls.AddRange(tmpSql2.Split(';').ToList()); } if (printFile.Contains(PrintUtil.TemplateFlag)) { PrintUtil.OnAfterPrint -= new EventHandler(OnReportPrintAfter); PrintUtil.OnAfterPrint += new EventHandler(OnReportPrintAfter); PrintUtil.FastReportPrint(tmpSqls, printFile, _isExcPrint); } else { DelphiHelper.LoadDelphiDll(printPath, printPath, printFile, tmpSql, tmpSql1, this.SysModel.PrintType, tmpSql2); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); LogHelper.Instance.WriteError(ex); } } /// /// 说明:模版新版打印 /// 创建人:龚宇超 /// 创建日期:2018-01-25 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnPrintItem70Click(object sender, ItemClickEventArgs e) { DataRow printRowItem = e.Item.Tag as DataRow; string printFile = printRowItem["printFile"] + ""; string printName = printRowItem["printName"] + ""; string printParams = printRowItem["printParams"] + ""; string printType = printRowItem["printType"] + ""; string sourceType = printRowItem["sourceType"] + ""; string printPath = PubUtil.PrintFileAbsolutelyPath70; string modid = printRowItem["modid"] + ""; if (!File.Exists(printPath)) { MessageUtil.Show(ResourceKeys.NotFoundPrintFile); return; } try { if (printFile.Contains(PrintUtil.TemplateFlag)) { this.GetPrintOtherParam(modid); DataRow dataRow = gcMain.GetViewFocusedDataRow(); string ids = string.Empty; string tmpSql = printRowItem["printSQL"] + ""; string tmpSql1 = printRowItem["printSQL1"] + ""; string tmpSql2 = printRowItem["printSQL2"] + ""; tmpSql = this.SearchObj.ReplaceParentControlValue(tmpSql); tmpSql1 = this.SearchObj.ReplaceParentControlValue(tmpSql1); tmpSql2 = this.SearchObj.ReplaceParentControlValue(tmpSql2); //目前固定替换焦点行数据,数据来源类型(sourceType)和Delphi里的用法有冲突,先不考虑 tmpSql = ReplaceHelper.ReplaceRowParam(dataRow, tmpSql); tmpSql1 = ReplaceHelper.ReplaceRowParam(dataRow, tmpSql1); tmpSql2 = ReplaceHelper.ReplaceRowParam(dataRow, tmpSql2); //替换左侧数据 if (this.LeftTreeViewEx != null || this.LeftGridEx != null) { string nodeKey = string.Empty; if (this.LeftTreeViewEx != null) { nodeKey = this.LeftTreeViewEx.GetSelectNodeValue(); ids = LeftTreeViewEx.GetCheckValues(); } if (this.LeftGridEx != null) { nodeKey = this.LeftGridEx.GetViewFocusedDataRow()[ParentKeyField] + ""; if (LeftGridEx is TreeGridControlEx) nodeKey = LeftGridEx.GetViewFocusedDataRow()[ParentKeyField] + ""; } nodeKey = string.IsNullOrEmpty(ids) ? nodeKey : ids; // select语句追加条件 tmpSql = ReplaceHelper.ReplaceTreeViewParentKeyCond(tmpSql, nodeKey); tmpSql1 = ReplaceHelper.ReplaceTreeViewParentKeyCond(tmpSql1, nodeKey); tmpSql2 = ReplaceHelper.ReplaceTreeViewParentKeyCond(tmpSql2, nodeKey); } //主Sql string mainSql = string.Empty; List tmpSqls = new List(); tmpSqls.Add(tmpSql); tmpSqls.Add(tmpSql1); tmpSqls.AddRange(tmpSql2.Split(';').ToList()); if (_printSaveParams != null && _printSaveParams.Count > 0) { _printSaveParams[5] = tmpSql + tmpSql1 + tmpSql2; _printSaveParams[3] = dataRow[_printSaveParams[2]] + ""; } if (printFile.Contains(PrintUtil.TemplateFlag)) { PrintUtil.OnAfterPrint -= new EventHandler(OnReportPrintAfter); PrintUtil.OnAfterPrint += new EventHandler(OnReportPrintAfter); PrintUtil.FastReportPrint(tmpSqls, printFile, _isExcPrint); } } else { if ("2".Equals(sourceType) || "3".Equals(sourceType)) { //int[] rows = this.gcMain.GridView.GetSelectedRows(); //List rowList = new List(); //for (int i = 0; i < rows.Length; i++) //{ // rowList.Add(this.gcMain.GridView.GetDataRow(rows[i])); //} DataRow[] dataRows = this.gcMain.GetViewFocusedDataRows(); printParams = dataRows != null && dataRows.Length > 0 ? dataRows.CopyToDataTable().ToJsonArray() : ""; } else { printParams = ReplaceHelper.ReplaceRowParam(this.gcMain.GetViewFocusedDataRow(), printParams); } DelphiHelper.LoadDelphiDll(printPath, printPath, this.Model.ModuleCode, printName, printParams, Convert.ToInt32(printType), ""); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); LogHelper.Instance.WriteError(ex); } } /// /// 说明:右键菜单执行后刷新数据,刷新规则按照上一次查询条件刷新 /// 创建人:龚宇超 /// 创建日期:2017-11-02 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnGridViewRightCallBack(object sender, EventArgs e) { try { if (DetailRightGridCallBack == null)//刷新所有页签本身会刷新自己 { int oldRowHandle = gcMain.GridView.FocusedRowHandle; if (!(gcMain is TreeGridControlEx) && oldRowHandle < 0) return; DataTable dt = this.gcMain.GridView.GetGridViewFilteredAndSortedDataToDataTable(); if (gcMain is TreeGridControlEx) dt = (gcMain as TreeGridControlEx).GetGridViewDataSource(); if (dt == null || dt.Rows.Count == 0) return; DataRow SelectTheLine = gcMain is TreeGridControlEx ? (gcMain as TreeGridControlEx).GetViewFocusedDataRow() : dt.Rows[oldRowHandle]; this.SearchObj.RememberRow = (this.SysModel.AccordingNameSelected == 0); this.SearchObj.SearchLastGrid(); if (this.SysModel.AccordingNameSelected != 0)//根据主键刷新目标选中行 { DataRow items = dt.Rows.Cast().FirstOrDefault(x => x[ParmaryKey].Equals(SelectTheLine[ParmaryKey])); dt = this.gcMain.GridView.GetGridViewFilteredAndSortedDataToDataTable(); BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = dt; int numberOfRows = bindingSource.Find(ParmaryKey, SelectTheLine[ParmaryKey].ToString()); this.gcMain.GridView.ClearSelection(); this.gcMain.GridView.FocusedRowHandle = numberOfRows; this.gcMain.GridView.SelectRow(numberOfRows); } } if (this.RightGridCallBack != null) this.RightGridCallBack(sender, e); if (DetailRightGridCallBack != null) this.DetailRightGridCallBack(sender, e); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:双击修改界面 /// 创建人:龚宇超 /// 创建日期:2017-11-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnGridViewDoubleClick(object sender, EventArgs e) { try { GridColumn gridColumn = this.gcMain.GridView.FocusedColumn; if (gridColumn != null && !gridColumn.FieldName.Equals("DX$CheckboxSelectorColumn")) { //双击的是url图片框就不打开修改界面(会打开图片框) GridColumnModel columnModel = gridColumn.Tag as GridColumnModel; if (columnModel != null && columnModel.FieldType == ControlType.LabPicUrl) return; } if (!string.IsNullOrWhiteSpace(this.SysModel.PreSQL))//如果配置预新增界面则弹出 { GridDetailModel gridDetailModel = this.GridControlObj.Tag as GridDetailModel; DataRow parentDataRow = this.ParentGridEx != null ? this.ParentGridEx.GridView.GetFocusedDataRow() : null; DataRow dataRow = this.gcMain.GridView.GetFocusedDataRow(); FrmAddDynamic frmAddDynamic = new FrmAddDynamic(); frmAddDynamic.Text = this.SysModel.MenuText; frmAddDynamic.DynamicSql = this.SysModel.PreSQL; frmAddDynamic.ModuleCode = this.SysModel.ModeCode; frmAddDynamic.MaxHeight = this.SysModel.AddDynamicMaxHeight; frmAddDynamic.UnionKey = gridDetailModel.UnionValue; frmAddDynamic.UnionValue = parentDataRow != null && parentDataRow.Table.Columns.Contains(gridDetailModel.UnionParentField) ? parentDataRow[gridDetailModel.UnionParentField] + "" : ""; frmAddDynamic.keyValue = dataRow != null && dataRow.Table.Columns.Contains("keyvalue") ? dataRow["keyvalue"] + "" : ""; if (frmAddDynamic.ShowDialog() == DialogResult.OK) { this.SearchObj.SearchLastGrid(); if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(null, null); } } } else { this.UpdateGridRecord(); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:查询条件 /// 创建人:龚宇超 /// 创建日期:2018-01-08 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnFixSearchClick(object sender, EventArgs e) { } /// /// 外部触发新增 /// public void ExternallyTriggeredAdd() { OnAddClick(null, null); } /// /// 说明:添加数据 /// 创建人:龚宇超 /// 创建日期:2017-10-23 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnAddClick(object sender, EventArgs e) { try { this.AddGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:删除数据 /// 创建人:龚宇超 /// 创建日期:2017-10-23 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnDelClick(object sender, EventArgs e) { try { this.DeleteGridRecordByNew(); if (this.AfterDeleteGridCallBack != null) this.AfterDeleteGridCallBack(sender, e); //if (this.SysModel.NewVer == 1) //{ // this.DeleteGridRecordByNew(); // if (this.AfterDeleteGridCallBack != null) this.AfterDeleteGridCallBack(sender, e); //} //else //{ // this.DeleteGridRecord(); // if (this.AfterDeleteGridCallBack != null) this.AfterDeleteGridCallBack(sender, e); //} if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(sender, e); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:修改数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnUpdateClick(object sender, EventArgs e) { try { this.UpdateGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:保存表格数据 /// 创建人:龚宇超 /// 创建日期:2017-10-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnSaveClick(object sender, EventArgs e) { this.isSuccessfullySaved = false; if (this.GridControlObj.CustomGroupBandEx != null || this.GridControlObj.CustomGroupTreeBandEx != null)//保存前若存在虚拟多表头则反写修改 { this.GridControlObj.callbackUpdData(); } int dataNumber = (this.GridControlObj.GridView.GetGridViewFilteredAndSortedDataToDataTable() as DataTable).Rows.Count; for (int i = 0; i < dataNumber; i++) { if (this.GridControlObj.GridView.GetDataRow(i).GetColumnsInError().Count() > 0) { MessageUtil.Show("表格中数据不符合要求,保存失败!"); return; } } if (this.SaveCondTab != null && this.SaveCondTab.Rows.Count > 0) { //获取新增和修改行 DataRow[] modifiedRows = this.gcMain is TreeGridControlEx ? ((gcMain as TreeGridControlEx).TreeListObj.DataSource as DataTable) .Rows .Cast() .Where(x => x.RowState == DataRowState.Modified || x.RowState == DataRowState.Added) .ToArray() : (gcMain.GridControl.DataSource as DataTable) .Rows .Cast() .Where(x => x.RowState == DataRowState.Modified || x.RowState == DataRowState.Added) .ToArray(); foreach (DataRow CondItem in SaveCondTab.Rows) { string condition = CondItem["condition"] + ""; if (!string.IsNullOrWhiteSpace(condition)) { foreach (DataRow item in modifiedRows) { if (!ValidateCond(condition, item)) { MessageUtil.Show(string.IsNullOrWhiteSpace(CondItem["hintmsg"] + "") ? "条件验证失败" : CondItem["hintmsg"] + ""); return; } } } } } if (this.gcMain is TreeGridControlEx) { bool isExec = true; try { TreeGridControlEx treeList = gcMain as TreeGridControlEx; if (this.GridControlObj != null && this.GridControlObj.AdapterObj != null) { if (ApiHelper.IsExecEventApi(Interface.Api.OperateEvent.AfterModuleDataChange, this.Model.ModuleCode, 0)) { goto IsApi; } if (this.SysModel.DefaultStoredProcedureSaves) { goto IsApi; } else { int result = this.GridControlObj.AdapterObj.Update(treeList.TreeListObj.DataSource as DataTable); if (result > 0) { this.isSuccessfullySaved = true; isExec = false; MessageUtil.Show(ResourceKeys.SaveSuccess); if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(sender, e); } } } } } catch (Exception) { } IsApi: if (isExec) { this.SaveTreeRecord(); if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(sender, e); } if (this.SysModel.ModifyClose && this.OnCloseCallback != null) { this.OnCloseCallback(null, null); } } } else { if (this.gcMain.GridView.ValidateNullRequired(this._nullFields)) { //判断重复验证列 if (this.gcMain.RepeatedVerificationNames.Count > 0 && this.gcMain.VerifyDuplicateColumns()) { MessageUtil.Show("表格中数据内容重复,保存失败!"); return; } bool isExec = true; try { if (this.GridControlObj != null && this.GridControlObj.AdapterObj != null && !this.GridControlObj.LastSearchSql.Contains("exec")) { if (ApiHelper.IsExecEventApi(Interface.Api.OperateEvent.AfterModuleDataChange, this.Model.ModuleCode, 0)) { goto IsApi; } if (this.SysModel.DefaultStoredProcedureSaves) { goto IsApi; } else { int result = this.GridControlObj.AdapterObj.Update(this.gcMain.GridControl.DataSource as DataTable); if (result > 0) { this.isSuccessfullySaved = true; isExec = false; MessageUtil.Show(ResourceKeys.SaveSuccess); if (this.SearchObj != null) { this.SearchObj.SearchLastGrid(); } if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(sender, e); } } } } } catch (Exception ex) { LogUtil.WriteError("基础档案明细保存失败", ex); } IsApi: if (isExec) { this.SaveGridRecord(); if (OnSaveGridCallBack != null) { this.OnSaveGridCallBack(sender, e); } if (this.SysModel.ModifyClose && this.OnCloseCallback != null) { this.OnCloseCallback(null, null); } } //保存后记录表名 //CacheRefresh.SetRefKeyDic(ERPInfo.Instance.PageControl.SelectedTabPage, SysModel.MenuTable); } } //this.gcMain.gridControl.DataSourceTable().AcceptChanges();//保存后提交表格修改 } /// /// 说明:导入数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnImportClick(object sender, EventArgs e) { try { this.ImportGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明: /// 数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnExportClick(object sender, EventArgs e) { try { this.ExportGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:打印数据 /// 创建人:龚宇超 /// 创建日期:2018-01-31 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnPrintClick(object sender, EventArgs e) { try { this.PrintGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:附件管理 /// 创建人:龚宇超 /// 创建日期:2019-06-05 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnBtnAttachClick(object sender, EventArgs e) { try { string primaryValue = this.gcMain.GetViewFocusedDataRow()[_parmaryKey] + ""; if (string.IsNullOrWhiteSpace(primaryValue)) { MessageUtil.Show(ResourceKeys.UnSaveData); } else { string url = string.Format("pages/PhotoView.html?left=1&username={0}&password={1}&id={2}&isview={3}&dllcoid=", ERPInfo.Instance.UserName, ERPInfo.Instance.Password, primaryValue, this.btnUpdate.Enabled ? "0" : "1"); // 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号) string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.Model.FormText, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, this.Model.ModuleCode).Split('~'); string[] menuArgs = SystemInfo.Instance.BsAttachFlag.Equals("1") ? new string[] { "", "", url } : new string[] { string.Format(ModuleArgs.PubPhotoViewArgs, primaryValue), "0", this.SysModel.MenuDirId + "", "" }; string[] args = defaultArgs.Concat(menuArgs).ToArray(); IForm form = FormHelper.LoadDllForm(SystemInfo.Instance.BsAttachFlag.Equals("1") ? ResourceDynamic.PubBrower : ResourceDynamic.PhotoView, args); DialogResult result = form.SubForm.ShowDialog(); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:行选中发生变化,判断是否是否可用 /// 创建人:龚宇超 /// 创建日期:2019-06-10 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. void OnGridViewFocusedRowObjectChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs e) { try { GridView gridView = sender as GridView; DataRow rowItem = gridView.GetFocusedDataRow(); this.ValidateButtonState(rowItem); this.RightButtonCondition(rowItem); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 搜索前执行高效验证 /// /// /// /// //private bool OnPreSearchVerification(object sender, SearchArgs e) //{ // if (SystemInfo.Instance.EfficientVerification) // { // //验证当前表 // if (this.gcMain.IsDataNotSaved()) // { // bool SaveResults = this.SaveWhenSwitching(); // if (!SaveResults) return false; // } // //验证对应明细页签中的表格 // if (verifyDetailsTab != null) // { // this.verifyDetailsTab(); // } // } //} /// /// 说明:搜索之前 /// 创建人:龚宇超 /// 创建日期:2019-05-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The e. protected void OnSearchBeforeCallBack(object sender, SearchArgs e) { if (!SearchObj.VerifyNull()) { e.Continue = false; } if (!string.IsNullOrEmpty(this.SysModel.CustomColumnSQL)) { WaitForm.ShowForm(); try { //if (this.SysModel.RefreshTableColumn) this.gcMain.RefreshDataSource(); BaseImpl.ExecSqlValue(this.SearchObj.ReplaceControlValue(this.SysModel.CustomColumnSQL)); this._gridColumns = BaseModuleImpl.GetBaseGridColumns(this.Model.ModuleCode); this._gridAllColumns = BaseModuleImpl.GetBaseGridAllColumns(this.Model.ModuleCode); // 报表类型创建只读列 if (this.Model is DynamicReportModel) { this.gcMain.SetReadOnlyColumns(this._gridColumns, GridCustomColumnStruct.BaseMainGridView + this.SysModel.FormKey); } else { if (SysModel.CanEdit) { this.gcMain.SetEditColumns(this._gridColumns, GridCustomColumnStruct.BaseMainGridView + this.SysModel.FormKey); } else { this.gcMain.SetReadOnlyColumns(this._gridColumns, GridCustomColumnStruct.BaseMainGridView + this.SysModel.FormKey); } } } catch (Exception) { } finally { WaitForm.HideForm(); } } if (!string.IsNullOrEmpty(this.SysModel.BeforeStored)) { WaitForm.ShowForm(); try { string sql = this.SearchObj.ReplaceControlValue(this.SysModel.BeforeStored); string result = SqlHelper.ExecuteScalar(sql) + ""; if (!string.IsNullOrEmpty(result)) MessageUtil.Show(result); } catch (Exception) { } finally { WaitForm.HideForm(); } } } /// /// 说明:搜索之后 /// 创建人:龚宇超 /// 创建日期:2019-05-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The e. protected void OnSearchAfterCallBack(object sender, EventArgs e) { if (!string.IsNullOrEmpty(this.SysModel.AfterStored)) { WaitForm.ShowForm(); try { string sql = this.SearchObj.ReplaceControlValue(this.SysModel.AfterStored); string result = SqlHelper.ExecuteScalar(sql) + ""; if (!string.IsNullOrEmpty(result)) MessageUtil.Show(result); } catch (Exception) { } finally { WaitForm.HideForm(); } } } /// /// 说明:表格编辑时,判断是否是否编辑 /// 创建人:hongxing /// 创建日期:2019-01-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnGridViewShowingEditor(object sender, CancelEventArgs e) { try { GridView gridView = (GridView)sender; GridColumn gridColumn = gridView.FocusedColumn; GridColumnModel gridColumnModel = null; if (gridColumn.Tag != null) { gridColumnModel = (GridColumnModel)gridColumn.Tag; } DataRow focusedRow = gridView.GetFocusedDataRow(); if (!gridView.FocusedColumn.FieldName.Equals("RightMenuBtnEdit"))//操作列可点击 { e.Cancel = !btnSave.Enabled; } if (!string.IsNullOrEmpty(this.SysModel.RowAllowEditCond) && focusedRow != null) { //e.Cancel = ReplaceHelper.EvalCond(ReplaceHelper.ReplaceRowParam(focusedRow, this.SysModel.RowAllowEditCond)); e.Cancel = !ValidateCond(this.SysModel.RowAllowEditCond, focusedRow, "P_SystemDllTab", "rowAllowEditCond"); } else if (gridColumnModel != null && !string.IsNullOrEmpty(gridColumnModel.DisableCond)) { //e.Cancel = !ReplaceHelper.EvalCond(ReplaceHelper.ReplaceRowParam(focusedRow, gridColumnModel.DisableCond)); e.Cancel = !ValidateCond(gridColumnModel.DisableCond, focusedRow); } // 备注框在禁编状态下仍允许打开弹窗查看内容,但不能修改。 if (gridColumnModel != null && gridColumnModel.FieldType == ControlType.LabMemoEdit) { RepositoryItemMemoExEdit memoEdit = gridColumn.ColumnEdit as RepositoryItemMemoExEdit; if (memoEdit != null) { bool readOnly = !btnSave.Enabled || e.Cancel || gridColumn.OptionsColumn.ReadOnly; memoEdit.ReadOnly = readOnly; if (readOnly) { memoEdit.AllowDropDownWhenReadOnly = DevExpress.Utils.DefaultBoolean.True; e.Cancel = false; } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:打印完成后回调 /// 创建人:龚宇超 /// 创建日期:2018-07-05 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The e. protected void OnReportPrintAfter(object sender, EventArgs e) { try { if (_printSaveParams != null && _printSaveParams.Count > 0) { //打印完成后添加数据库 int result = BaseModuleImpl.SavePrintRecord(_printSaveParams[0], _printSaveParams[1], _printSaveParams[2], _printSaveParams[3], _printSaveParams[4]); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:帮助文档 /// 创建人:龚宇超 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnBtnHelpClick(object sender, EventArgs e) { try { WebBrowserUtil.StartWebBrowser(this.Model.ModuleCode, this.SysModel.MenuText); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:刷新表格数据源 /// 创建人:曹屹峰 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. private void btnRefresh_Click(object sender, EventArgs e) { try { WaitForm.ShowForm(); //刷新当前表格 if (this.gcMain is TreeGridControlEx) { (this.gcMain as TreeGridControlEx).RefreshDataSource(); } else { this.gcMain.RefreshDataSource(); } //刷新子模块表格 if (AfterRefreshingCallBack != null) AfterRefreshingCallBack(sender, e); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } finally { WaitForm.HideForm(); } } /// /// 右键导出数据 /// /// /// protected void OnTsmExportClick(object sender, EventArgs e) { try { this.ExportGridRecord(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:添加空行 /// 创建人:龚宇超 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnGridViewMouseDown(object sender, MouseEventArgs e) { try { int rowNumber = this.gcMain.GridView.FocusedRowHandle; if (e.Button == System.Windows.Forms.MouseButtons.Left && rowNumber < 0) { AddGridViewRecord(); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:查询条件绑定完成查询数据 /// 创建人:龚宇超 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnMainSearchDataSourceBindCallBack(object sender, EventArgs e) { try { if (!string.IsNullOrEmpty(this.SysModel.CustomColumnSQL)) { BaseImpl.ExecSqlValue(this.SearchObj.ReplaceControlValue(this.SysModel.CustomColumnSQL)); } if (!string.IsNullOrWhiteSpace(this.SearchControlSql)) { DataRow rowItem = BaseImpl.GetDataRowResult(this.SearchControlSql); this.SearchObj.SetAllControlValue(rowItem); this.SearchObj.SyncLocalModel(); if (!string.IsNullOrEmpty(this.SysModel.SearchCondFormModuleCode) && StaticControl.ConditionsPanelDic.ContainsKey(this.SysModel.ModeCode)) { ModuleConditionsPanelEx conditionsPanel = StaticControl.ConditionsPanelDic[this.SysModel.ModeCode]; this.SearchObj.MainGridEx.LastSearchSql = conditionsPanel.CondSql; conditionsPanel.ReplaceParentControlObj(this.SearchObj); if (!string.IsNullOrWhiteSpace(conditionsPanel.CondSql)) { this.SearchObj.SearchLastGrid(); } } else { this.SearchObj.SearchGrid(); } } if (ParentControlObj != null) { foreach (ControlModel item in this.SearchObj.mControlList) { BaseUserControl baseUserControl = ParentControlObj.FindControl(item.FieldName); if (baseUserControl != null) { this.SearchObj.SetControlValue(item, baseUserControl.EditText); } } } if (!IsDetail) { DynamicReportModel reportModel = this.Model as DynamicReportModel; //if (this.SysModel.CsHasDefultSearch || (reportModel != null && reportModel.AutoQuery)) //{ // this.SearchObj.SearchGrid(); //} if (!string.IsNullOrEmpty(this.SysModel.SearchCondFormModuleCode) && StaticControl.ConditionsPanelDic.ContainsKey(this.SysModel.ModeCode)) { ModuleConditionsPanelEx conditionsPanel = StaticControl.ConditionsPanelDic[this.SysModel.ModeCode]; this.SearchObj.MainGridEx.LastSearchSql = conditionsPanel.CondSql; conditionsPanel.ReplaceParentControlObj(this.SearchObj); if (!string.IsNullOrWhiteSpace(conditionsPanel.CondSql)) { this.SearchObj.SearchLastGrid(); } } else if (this.SysModel.CsHasDefultSearch || (reportModel != null && reportModel.AutoQuery)) { if (!Model.DataCaches.GetValue(this, "SearchSourceTable", out DataTable sourceTable)) { this.SearchObj.SearchGrid(); } else { this.SearchObj.SearchGrid(sourceTable); } if (this.SysModel.RecordRowUponExit) { string Handle = IniHelper.Read(string.Format("RecordRowUponExit_{0}", this.Model.ModuleCode)); if (!string.IsNullOrWhiteSpace(Handle) && int.Parse(Handle) > 0) { this.gcMain.GridView.SelectRowHandler(int.Parse(Handle)); } } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:粘贴表格后更新树结构关联字段 /// 创建人:龚宇超 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The row item. protected void OnGridViewParseGridDataCallBack(DataRow rowItem) { try { if (rowItem != null && rowItem.Table.Columns.Contains(ParentKeyField)) { if (this.LeftTreeViewEx != null) { rowItem[ParentKeyField] = this.LeftTreeViewEx.GetSelectNodeValue(); } if (this.LeftGridEx != null) { rowItem[ParentKeyField] = this.LeftGridEx.GetViewFocusedDataRow()[ParentKeyField] + ""; if (LeftGridEx is TreeGridControlEx) rowItem[ParentKeyField] = LeftGridEx.GetViewFocusedDataRow()[ParentKeyField] + ""; } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 选中行才显示条码列内容 /// /// /// private void OnGridViewCustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo gridViewInfo = gcMain.GridView.GetViewInfo() as DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo; DevExpress.XtraGrid.Views.Grid.ViewInfo.GridCellInfo cellInfo = gridViewInfo.GetGridCellInfo(gcMain.GridView.FocusedRowHandle, e.Column); List mergedRowHandle = new List(); if (cellInfo != null && cellInfo.IsMerged && cellInfo.MergedCell != null) { DevExpress.XtraGrid.Views.Grid.ViewInfo.GridMergedCellInfo gridMergedCellInfo = cellInfo.MergedCell as DevExpress.XtraGrid.Views.Grid.ViewInfo.GridMergedCellInfo; foreach (var item in gridMergedCellInfo.MergedCells) { mergedRowHandle.Add(item.RowHandle); } } if (this.SysModel.SelectDisplayColumn.Split(',').Contains(e.Column.FieldName) && (e.RowHandle != gcMain.GridView.FocusedRowHandle && !mergedRowHandle.Contains(e.RowHandle))) { e.Cache.FillRectangle(ColorTranslator.FromHtml(SystemInfo.Instance.SelectRowBackColor), e.Bounds); e.Handled = true; } } /// /// 说明:右键列调用dll /// 创建人:龚宇超 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The row item. protected void OnGridColumnCallDLL(string type) { if (type.Equals("1")) { // 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号) string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.Model.FormText, this.Model.UserId, this.Model.UserName, this.Model.Privilege, "GrouP001").Split('~'); string[] menuArgs = new string[] { "", "GrouP001", "", "", "" }; string[] args = defaultArgs.Concat(menuArgs).ToArray(); IForm form = FormHelper.LoadDllForm(ResourceDynamic.PubModuleDetail, args); DialogResult result = form.SubForm.ShowDialog(); } else { string url = string.Format("/Lserp_v8/app.html?dll=Lskj.pubmoduledetail.dll&dllcoid={0}&username={1}&password={2}", "GrouP001", ERPInfo.Instance.UserName, ERPInfo.Instance.Password); // 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号) string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.Model.FormText, this.Model.UserId, this.Model.UserName, this.Model.Privilege, "").Split('~'); string[] menuArgs = new string[] { "", "", url }; string[] args = defaultArgs.Concat(menuArgs).ToArray(); IForm form = FormHelper.LoadDllForm(ResourceDynamic.PubBrower, args); DialogResult result = form.SubForm.ShowDialog(); } } /// /// 重新计算右上角按钮坐标 /// private void CalculateCoordinates() { List buttons = new List();//没有隐藏的按钮集合 //刷新按钮 //刷新按钮 if (SystemInfo.Instance.FoundationHideTableRefresh) { this.btnRefresh.Visible = false; pl_top_right.Width = pl_top_right.Width - this.btnRefresh.Width; } else { buttons.Add(this.btnRefresh); } //帮助文档按钮 if (SystemInfo.Instance.HideHelpDocument) { this.btnHelp.Visible = false; pl_top_right.Width = pl_top_right.Width - this.btnHelp.Width; } else { buttons.Add(this.btnHelp); } //打印按钮 if (this.SysModel.HiddenPrint) { this.ddbPrint.Visible = false; pl_top_right.Width = pl_top_right.Width - this.ddbPrint.Width; } else { buttons.Add(this.ddbPrint); } //常用操作按钮 buttons.Add(this.ddbOper); //附件管理按钮 if (this.SysModel.AttachReveal) { buttons.Add(this.btnAttach); } else { pl_top_right.Width = pl_top_right.Width - this.btnAttach.Width; } //从最后开始计算 int x = 10; if (buttons.Count != 5) { foreach (SimpleButton item in buttons) { item.Location = new Point(pl_top_right.Width - x - item.Width, 4); x += item.Width + 6; } } } /// /// 设置上方按钮形式的右键 /// private void InitializeUpperRightMenu() { if (ButtonModeRightMenus.Count > 0) { this.pl_top_RightMenus.Visible = true; List buttons = new List(); //条件左侧的4个按钮 if (this.SysModel.AttachReveal) buttons.Add(this.btnAttach); buttons.Add(this.ddbOper); if (!this.SysModel.HiddenPrint) buttons.Add(this.ddbPrint); if (!SystemInfo.Instance.HideHelpDocument) buttons.Add(this.btnHelp); buttons.Add(this.btnRefresh); int x = 5; int y = 4; foreach (SimpleButton item in buttons) { item.Parent = this.pl_top_RightMenus; item.Location = new Point(x, 4); x += 80; } foreach (DataRow item in ButtonModeRightMenus) { GridRightMenuModel menuModel = new GridRightMenuModel(item); SimpleButton button = new SimpleButton(); button.Font = new Font("宋体", 9); button.Text = menuModel.MenuName; button.Height = 24; //按钮最小大小 button.MinimumSize = new Size(75, 24); //根据名字和字体设置宽度 Size size = TextRenderer.MeasureText(button.Text, button.Font); button.Width = size.Width; button.Tag = menuModel; button.Click += new EventHandler(OnModuleClick); button.Parent = this.pl_top_RightMenus; button.Location = new Point(x, 4); RightButtons.Add(button); x += button.Width + 5; } } } /// /// 判断右键按钮 /// private void RightButtonCondition(DataRow rowItem) { if (rowItem == null) return; //判断 mrp按钮对象 if (this.SearchObj.mrpBtnDic.Count > 0) { foreach (SimpleButton toolButton in this.SearchObj.mrpBtnDic.Values) { GridRightMenuModel model = toolButton.Tag as GridRightMenuModel; if (model == null) continue; if (model.PrivilegeOper.Length > 1 && !model.PrivilegeOper.Contains(ERPInfo.Instance.UserName + ",")) { toolButton.Enabled = false; } else { if (!string.IsNullOrWhiteSpace(model.MenuCond)) { try { string cond = string.Empty; cond = ReplaceHelper.ReplaceRowParam(rowItem, model.MenuCond); if (this.gcMain.GridView != null) { GridCell[] cells = this.gcMain.GridView.GetSelectedCells(); if (cells != null && cells.Length > 0 && cond.Contains("{COLUMN_")) { GridCell cell = cells[0]; DataRow focusedRow = this.gcMain.GridView.GetFocusedDataRow(); string colValue = focusedRow == null || !focusedRow.Table.Columns.Contains(cell.Column.Name) ? "" : focusedRow[cell.Column.Name] + ""; cond = cond.ReplaceColumnParam(cell.Column.Name, cell.Column.Caption, colValue); } } toolButton.Enabled = ReplaceHelper.EvalCond(cond); } catch (Exception ex) { } } } } } // 判断顶部右键菜单是否可用 if (RightButtons.Count > 0) { foreach (SimpleButton toolButton in RightButtons) { DataRow dr = toolButton.Tag as DataRow; GridRightMenuModel model = new GridRightMenuModel(dr); if (model == null) continue; if (model.PrivilegeOper.Length > 1 && !model.PrivilegeOper.Contains(ERPInfo.Instance.UserName + ",")) { toolButton.Enabled = false; } else { if (!string.IsNullOrWhiteSpace(model.MenuCond)) { try { string cond = ReplaceHelper.ReplaceRowParam(rowItem, model.MenuCond); toolButton.Enabled = ReplaceHelper.EvalCond(cond); } catch (Exception) { } } } } } //辅助功能按钮 foreach (SimpleButton item in itemCommonList) { if (item.Visible == true && item.Tag is DataRow rightRow) { GridRightMenuModel model = new GridRightMenuModel(rightRow); if (!string.IsNullOrEmpty(model.MenuCond)) { item.Enabled = ValidateCond(model.MenuCond, rowItem); } } } } /// /// 按钮形式的右键点击事件 /// /// /// void OnModuleClick(object sender, EventArgs e) { try { //WaitForm.ShowForm(); SimpleButton button = sender as SimpleButton; if (button != null) { if (button.Tag is GridRightMenuModel) { DataRow rowItem = this.gcMain.GridView.GetFocusedDataRow(); GridRightMenuModel model = button.Tag as GridRightMenuModel; if (rowItem == null && !model.isStartRun) { MessageUtil.Show(ResourceKeys.SelectRowIsNull); return; } BaseRightMenu menu = new BaseRightMenu(); menu.Model = this.Model; if (menu.ExecRightMenu(model, new DataRow[] { rowItem }) && model.Refresh) { this.OnGridViewRightCallBack(null, null); } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } finally { //WaitForm.HideForm(); } } /// /// 表格键盘事件 /// /// /// private void OnGcMain_KeyDown(object sender, KeyEventArgs e) { try { //点击Tab键时,如果是最后一行,最后一列,就新增一行 if (e.KeyCode == Keys.Tab && SystemInfo.Instance.TabAddLine) { if (this.btnAdd.Enabled) { int focusedRowHandle = this.gcMain.GridView.FocusedRowHandle; GridColumn[] Columns = this.gcMain.GridView.GetSelectedCells(focusedRowHandle);//当前选中的单元格 //判断是否为最后一行,最后一列 if (Columns.Length > 0 && Columns[0].VisibleIndex == this.gcMain.GridView.Columns.Count - 1 && focusedRowHandle == this.gcMain.GridView.RowCount - 1) { this.AddGridViewRecord(); } //判断表格是否为空 if (this.gcMain.GridView.RowCount == 0) { this.AddGridViewRecord(); } } } if (e.KeyCode == Keys.Enter && this.SysModel.EnterToNextRow) { // 获取当前行和列 int currentRow = this.gcMain.GridView.FocusedRowHandle; int currentColumn = this.gcMain.GridView.FocusedColumn.VisibleIndex; //移动到下一行 int targetRow = currentRow + 1; if (targetRow < this.gcMain.GridView.RowCount) { this.gcMain.GridView.FocusedRowHandle = targetRow; this.gcMain.GridView.FocusedColumn = this.gcMain.GridView.VisibleColumns[currentColumn]; //gridView.MakeRowVisible(targetRow); } else { // 取消默认行为(避免在最后一行点击回车时向右移动) e.SuppressKeyPress = true; } } } catch (Exception ex) { } } #endregion /// /// 切换时保存(作为明细页签被切换时) /// /// public bool SaveWhenSwitching() { this.SaveResults = false; if (this.pl_buttom.Visible && this.btnSave.Visible && this.btnSave.Enabled) { this.OnSaveClick(null, null); } return SaveResults; } public void SelectTheSpecifiedRow() { if (!string.IsNullOrWhiteSpace(this.TagName) && ParentGridEx != null && ParentGridEx.GridView.OptionsSelection.MultiSelect == true && GridControlObj.GridView.OptionsSelection.MultiSelect == true && this.ParentControlEx.DetailSelection.ContainsKey(this.TagName)) { DataRow rowItem = this.ParentGridEx.GridView.GetFocusedDataRow(); Dictionary dictionary = this.ParentControlEx.DetailSelection[this.TagName]; if (dictionary.ContainsKey(rowItem)) { DataTable dataTable = GridControlObj.GridControl.DataSource as DataTable; string value = dictionary[rowItem]; for (int rowHandle = 0; rowHandle < GridControlObj.GridView.RowCount; rowHandle++) { string cellValue = GridControlObj.GridView.GetRowCellValue(rowHandle, ParmaryKey) + ""; if (value.Split(',').Contains(cellValue)) { GridControlObj.GridView.SelectRow(rowHandle); // 勾选 } } } } } /// /// 设置动态列提示信息 /// /// public void SetDisplayColumns(string text) { if (!this.SysModel.SearchEnable) { PromptBox.EditText = text; // 获取文档对象 Document document = this.PromptBox.TextEdit.Document; document.BeginUpdate(); try { // 获取段落属性并设置行间距 ParagraphProperties pp = document.BeginUpdateParagraphs(document.Range); // 设置行间距为1.2倍 pp.LineSpacingType = ParagraphLineSpacing.Multiple; pp.LineSpacingMultiplier = 1.2f; document.EndUpdateParagraphs(pp); } finally { document.EndUpdate(); } //前4行高度 //int textHeight = (int)Math.Round(this.GetFirstThreeLinesHeight(PromptBox.TextEdit)*1.2) +20; //if (textHeight > this.TopHeight) //{ // this.pl_top.Height = textHeight; //} //else //{ // this.pl_top.Height = this.TopHeight; //} } } /// /// 说明:设置分割条位置 /// 创建人:龚宇超 /// 创建日期:2018-02-01 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnSplitterMoved(object sender, EventArgs e) { try { if (this.Model != null) { IniHelper.Write(string.Format("base_grid_height_{0}", this.Model.ModuleCode), this.scc_container.SplitterPosition + ""); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:设置分割条位置 /// 创建人:龚宇超 /// 创建日期:2018-02-01 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void InitlizeSpiltLocation() { try { string htight = IniHelper.Read(string.Format("base_grid_height_{0}", this.Model.ModuleCode)); if (!string.IsNullOrEmpty(htight)) { this.scc_container.SplitterPosition = Convert.ToInt32(htight); } else { this.scc_container.SplitterPosition = 250; } } catch (Exception ex) { LogHelper.Instance.WriteError(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } public int GetFirstThreeLinesHeight(RichEditControl richEdit) { if (string.IsNullOrEmpty(richEdit.Text)) return 0; // 获取字体和最大宽度 Document document = richEdit.Document; Font font = richEdit.Font; int maxWidth = richEdit.ClientSize.Width - richEdit.Padding.Horizontal; // 获取前3行文本 string[] lines = richEdit.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None); int lineCount = Math.Min(4, lines.Length); string firstThreeLines = string.Join(Environment.NewLine, lines.Take(lineCount)); // 创建StringFormat StringFormat format = new StringFormat(StringFormat.GenericTypographic); format.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces; // 测量文本高度 using (Graphics g = richEdit.CreateGraphics()) { SizeF textSize = g.MeasureString( firstThreeLines, font, maxWidth, format ); return (int)Math.Ceiling(textSize.Height); } } /// /// 新增行,并替换指定字段值 /// /// /// public void AddGridRows(string FieldName, List list) { if (string.IsNullOrWhiteSpace(this.SysModel.MenuAddName)) { DataTable dt = this.gcMain.GridControl.DataSource as DataTable; if (dt == null) { MessageUtil.Show("请查询后添加!"); return; } if (!SysModel.CanEdit) { MessageUtil.Show("表格不可编辑,增加失败"); return; } if (!(dt.Columns.Contains(ERPInfo.Instance.isAddRows))) { dt.Columns.Add(ERPInfo.Instance.isAddRows, typeof(String)); } try { foreach (string item in list) { this.AddGridViewRecord(); int lastRowHandle = gcMain.GridView.GetRowHandle(gcMain.GridView.DataRowCount - 1); if (gcMain.GridView.IsValidRowHandle(lastRowHandle)) { gcMain.GridView.SetRowCellValue(lastRowHandle, FieldName, item); gcMain.GridView.RefreshRow(lastRowHandle); } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } } } }