/****************************** * 说明:TabControlEx多标签(标签内容包含表格和图表) 应用于审核附加信息、基础档案审核附加信息 * 创建人:龚宇超 * 创建日期:2018-01-10 * 修改人: * 修改日期: * 修改备注: * 版本: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.XtraTab; using Lskj.Util; using Lskj.Business.Impl; using Lskj.Control.Model; using Lskj.Model; using DevExpress.XtraEditors; using Lskj.Data; using DevExpress.XtraGrid.Columns; using Lskj.Business; using DevExpress.XtraGrid.Views.Grid; using System.Threading.Tasks; using System.Collections; namespace Lskj.Control { /// /// 多标签,标签内容包含表格和图表 /// public partial class TabControlEx : UserControl { /// /// 是否加载明细刷新 /// /// true if [_ un refresh]; otherwise, false. private bool _UnRefresh { get { return Model is DynamicModuleDetailModel || Model is DynamicModuleModel || Model is DynamicProductionModel; } } /// /// 拖拽模式 /// public bool IsDragDetail; /// /// 拖拽目标主键字段 /// public string DrgaParentPrimaryKey; /// /// 添加数据sql赋值 /// public string ControlSql; /// /// tab标签 /// private List _gridDetail; /// /// tab标签里明细数据 /// private List _gridIntoDetail; /// /// 是否为Mrp明细页签 /// private bool isMrpDetail = false; /// /// The system model /// public DynamicModel Model; /// /// 父表格 /// public GridControlEx ParentGridEx; /// /// Mrp父表格 /// public GridControlEx MrpParentGridEx; /// /// Mrp父明细表格 /// public GridControlEx MrpDetailGridEx; /// /// 父容器 /// public MyControl ParentControlEx; /// /// 明细数据里的主表格 /// public ModuleGridEx ModuleGridObj; /// /// 选项卡 /// public XtraTabControl TabControlObj { get { return this.xtc_container; } } /// /// 右键菜单执行后调用 /// /// The sender. public event EventHandler OnRightCallback; /// /// 在保存网格回调(右键) /// /// The sender. public event EventHandler OnDetailRightCallback; /// /// 在保存网格回调 /// /// The sender. public event EventHandler OnDetailSaveGridCallBack; //拖拽模式拖拽完成委托 public delegate void DragCompleteCallbackEventHandler(object sender, GridDragGridArgs e); //拖拽模式拖拽完成回调 public event DragCompleteCallbackEventHandler OnDragCompleteCallback; /// /// 拖拽模式DetailView双击点击事件回调 /// public event EventHandler OnDetailViewDoubleClickCallBack; /// /// mrp拖拽完成后 /// public event EventHandler OnMrpDragCallback; public event EventHandler OnMrpBtnClickCallback; /// /// 明细页签与主模块对应关系 /// public Dictionary> DetailTabPagesDic = new Dictionary>(); /// /// 页签控件集合 /// public Dictionary PageControlsDic = new Dictionary(); public TabControlEx() { InitializeComponent(); this.Disposed += OnTabControlExDisposed; } /// /// 说明:绑定选项卡 /// 创建人:龚宇超 /// 创建日期:2018-01-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void InitTabPages(List gridDetail, bool isGridmerge = true, bool isAddPages = false) { this._gridDetail = gridDetail; if (!isAddPages) { this.xtc_container.TabPages.Clear(); } string DetaiName = string.Empty; Dictionary dataCaches = Model != null ? Model.DataCaches : null; foreach (GridDetailModel model in this._gridDetail) { object control = PageControlsDic.ContainsKey(model) ? PageControlsDic[model] : null; bool hasControl = control != null; if (DetaiName.Equals(model.DetailName) && isGridmerge) continue; GridDetailModel[] isMeage = gridDetail.Cast().Where(x => x.DetailName.Equals(model.DetailName)).ToArray(); XtraTabPage page = new XtraTabPage(); page.SizeChanged += OnPageSizeChanged; page.Text = model.DetailName; if (SystemInfo.Instance.GridRowFontSize > 0) { //页签大小 FontFamily fontFamily = page.Appearance.Header.Font.FontFamily; page.Appearance.Header.Font = new System.Drawing.Font(fontFamily, SystemInfo.Instance.GridRowFontSize); } if (model.IsChart) { ChartControlEx chartEx = hasControl && control is ChartControlEx ? (ChartControlEx)control : new ChartControlEx(); chartEx.Dock = DockStyle.Fill; chartEx.transverseHistogram = model.transverseHistogram; //chartEx.SetCharts(BaseModuleImpl.GetChartParams(model.FormKey)); //chartEx.SetChartRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); if (!dataCaches.GetValue(chartEx, "ChartParams", out DataTable dtChartParams)) { dtChartParams = BaseModuleImpl.GetChartParams(model.FormKey); } if (!dataCaches.GetValue(chartEx, "ChartRightMenus", out DataTable dtBaseGridRightMenus)) { dtBaseGridRightMenus = BaseModuleImpl.GetBaseGridRightMenus(model.FormKey); } chartEx.SetCharts(dtChartParams); chartEx.SetChartRightMenus(dtBaseGridRightMenus, this.Model, OnGridViewRightCallBack); chartEx.Tag = model; page.Tag = chartEx; page.Controls.Add(chartEx); } else if (model.IsExcel) { ExcelControlEx excelEx = hasControl && control is ExcelControlEx ? (ExcelControlEx)control : new ExcelControlEx(); excelEx.Dock = DockStyle.Fill; excelEx.Tag = model; page.Tag = excelEx; page.Controls.Add(excelEx); } else if (model.IsWebView) { // 加载网页 string url = model.DetailSql.StartsWith("http") ? model.DetailSql : SystemInfo.Instance.OAUrl + model.DetailSql; //url= System.Web.HttpUtility.UrlEncode(url); if (SystemInfo.Instance.PrimitiveBrowser) { FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink(); webView.IsDownVerify = true; webView.Dock = DockStyle.Fill; webView.Tag = model; page.Tag = webView; page.Controls.Add(webView); webView.LoadUrl(ReplaceHelper.ReplaceUserInfo(url)); } else { FrmWebBrowser webView = hasControl && control is FrmWebBrowser ? (FrmWebBrowser)control : new FrmWebBrowser(); webView.Dock = DockStyle.Fill; webView.Tag = model; page.Tag = webView; page.Controls.Add(webView); webView.FrmLoad(ReplaceHelper.ReplaceUserInfo(url)); } } else if (model.IsWebView2) { // 加载网页 string url = model.DetailSql.StartsWith("http") ? model.DetailSql : SystemInfo.Instance.OAUrl + model.DetailSql; //url= System.Web.HttpUtility.UrlEncode(url); if (SystemInfo.Instance.PrimitiveBrowser) { FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink(); webView.Dock = DockStyle.Fill; webView.Tag = model; page.Tag = webView; page.Controls.Add(webView); webView.LoadUrl(ReplaceHelper.ReplaceUserInfo(url)); } else { FrmWebBrowser2 webView = hasControl && control is FrmWebBrowser2 ? (FrmWebBrowser2)control : new FrmWebBrowser2(); webView.Dock = DockStyle.Fill; webView.Tag = model; page.Tag = webView; page.Controls.Add(webView); webView.FrmLoad(ReplaceHelper.ReplaceUserInfo(url)); } } else if (model.IsWebView3) { // 加载网页 string url = model.DetailSql.StartsWith("http") ? model.DetailSql : SystemInfo.Instance.OAUrl + model.DetailSql; //url= System.Web.HttpUtility.UrlEncode(url); if (SystemInfo.Instance.PrimitiveBrowser) { FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink(); webView.AllowDownload = false; webView.Dock = DockStyle.Fill; webView.Tag = model; page.Tag = webView; page.Controls.Add(webView); webView.LoadUrl(ReplaceHelper.ReplaceUserInfo(url)); } else { FrmWebBrowser2 webView = hasControl && control is FrmWebBrowser2 ? (FrmWebBrowser2)control : new FrmWebBrowser2(); webView.Dock = DockStyle.Fill; webView.Tag = model; webView.AllowDownload = false; page.Tag = webView; page.Controls.Add(webView); webView.FrmLoad(ReplaceHelper.ReplaceUserInfo(url)); } } else if (model.IsAddPanel && isGridmerge) { // 加载添加界面 ModulePanelEx modulePanel = hasControl && control is ModulePanelEx ? (ModulePanelEx)control : new ModulePanelEx(); modulePanel.Dock = DockStyle.Fill; if (!dataCaches.GetValue(modulePanel, "BasePrimaryKey", out string primaryKey)) { primaryKey = BaseImpl.GetBasePrimaryKey(this.Model.ModuleCode); } modulePanel.PrimaryKey = primaryKey; if (!dataCaches.GetValue(modulePanel, "SystemDllRow", out DataRow systemRow)) { systemRow = MainImpl.GetSystemdllTab(this.Model.ModuleCode); } modulePanel.InitializeControl(new ModuleModel(systemRow), this.Model); //modulePanel.OnAddRecordCallBack += new EventHandler(OnAddRecordCallBack); //modulePanel.OnCloseCallback += new EventHandler(OnAddRecordCallBack); modulePanel.OperatePanelControlObj.Visible = false; modulePanel.SpeciesPanelControlObj.Visible = false; modulePanel.Tag = model; page.Tag = modulePanel; page.Controls.Add(modulePanel); } else if (model.IsDetailView) { ModuleGridDetailEx DetailEx = hasControl && control is ModuleGridDetailEx ? (ModuleGridDetailEx)control : new ModuleGridDetailEx(); DetailEx.Dock = DockStyle.Fill; if (!dataCaches.GetValue(DetailEx, "DynamicModel", out DynamicModel dyncModel)) { dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, model.UnionModule, "0" }); } if (!dataCaches.GetValue(DetailEx, "SystemDllRow", out DataRow moduleInformation)) { moduleInformation = MainImpl.GetSystemdllTab(model.UnionModule); } if (moduleInformation == null) { MessageUtil.Show("没有找到编号为" + model.UnionModule + "的模块信息"); return; } if (!dataCaches.GetValue(DetailEx, "SysModel", out model.SystemModel)) { model.SystemModel = new ModuleModel(moduleInformation); } if (!dataCaches.GetValue(DetailEx, "Details", out List details)) { details = GetDetails(model.SystemModel.ModeCode);//底部多标签表格数据 } DetailEx.GridDetailList = details; DetailEx.IsDragDetail = IsDragDetail; DetailEx.TcButtom.OnDetailViewDoubleClickCallBack += OnDetailGridViewDoubleClick; DetailEx.TcButtom.OnDragCompleteCallback += OnDragGridCompleted; DetailEx.InitializeControl(model.SystemModel, dyncModel);//初始化控件 if (!Model.DataCaches.GetValue(DetailEx, "BaseGridRightMenus", out DataTable rightDt)) { rightDt = rightDt = BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn); } if ((rightDt != null && rightDt.Rows.Count > 0) || this.isMrpDetail) { this.isMrpDetail = true; //gridEx.VisibleMrpSearchPanel = true; } if (IsDragDetail && this.ParentGridEx != null && model.IsDrag) { // 拖拽模式,绑定拖拽对象 //GridDragGrid dragGrid = new GridDragGrid(DetailEx.ModuleGridObj.GridControlObj.GridView, this.ParentGridEx.GridView); //dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted); } if (this.MrpParentGridEx != null && model.IsMrpDrag)//mrp拖拽 { GridDragGrid dragGrid = new GridDragGrid(this.MrpParentGridEx.GridView, DetailEx.ModuleGridObj.GridControlObj.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted); } if (this.MrpDetailGridEx != null && model.IsMrpDrag)//mrp拖拽 { GridDragGrid dragGrid = new GridDragGrid(this.MrpDetailGridEx.GridView, DetailEx.ModuleGridObj.GridControlObj.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted); } if (this.isMrpDetail && this.OnMrpBtnClickCallback != null)//当前为mrp模块 { DetailEx.ModuleGridObj.RightGridCallBack += this.OnMrpBtnClickCallback; } DetailEx.ModuleGridObj.VisibleSearchPanel = Model.IsDetailSearch || model.DetailSearch; DetailEx.ModuleGridObj.GridControlObj.Tag = model; page.Tag = DetailEx.ModuleGridObj.GridControlObj; page.Controls.Add(DetailEx); } else { if (model.IsReadOnly && isMeage.Count() == 1) { PanelControl plBottom = new PanelControl(); plBottom.Dock = DockStyle.Bottom; plBottom.Visible = false; PanelControl plMain = new PanelControl(); plMain.Dock = DockStyle.Fill; GridControlEx gridEx = null; if (model.AutoMultiHeader == 1) { gridEx = hasControl && control is BandedGridControlEx ? (BandedGridControlEx)control : new BandedGridControlEx(); } else { gridEx = hasControl && control is GridControlEx ? (GridControlEx)control : new GridControlEx(); } gridEx.Dock = DockStyle.Fill; gridEx.Tag = model; gridEx.Parent = plMain; gridEx.Model = this.Model; if (!dataCaches.GetValue(model, "GridColumns", out DataTable dtGridColumns)) { dtGridColumns = model.GridColumns; } gridEx.SetReadOnlyColumns(dtGridColumns, model.GridCustomColumnKey); //gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); //gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey)); if (!dataCaches.GetValue(gridEx, "BaseGridRightMenus", out DataTable dtBaseGridRightMenus)) { dtBaseGridRightMenus = BaseModuleImpl.GetBaseGridRightMenus(model.FormKey); } if (!dataCaches.GetValue(gridEx, "BaseGridRowColors", out DataTable dtBaseGridRowColors)) { dtBaseGridRowColors = BaseModuleImpl.GetBaseGridRowColors(model.FormKey); } gridEx.SetGridRightMenus(dtBaseGridRightMenus, this.Model, OnGridViewRightCallBack); gridEx.SetGridRowColors(dtBaseGridRowColors); if (model.IsCheck == 1)//加载复选框 { GridDragGrid.GridAddCheckBox(gridEx.GridView); } if (model.LoadFilter)//加载筛选行 { gridEx.GridView.OptionsView.ShowAutoFilterRow = true; } if (IsDragDetail && this.ParentGridEx != null && model.IsDrag) { // 拖拽模式,绑定拖拽对象 GridDragGrid dragGrid = new GridDragGrid(gridEx.GridView, this.ParentGridEx.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted); } if (this.MrpParentGridEx != null && model.IsMrpDrag)//mrp拖拽 { GridDragGrid dragGrid = new GridDragGrid(this.MrpParentGridEx.GridView, gridEx.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted); } if (this.MrpDetailGridEx != null && model.IsMrpDrag)//mrp拖拽 { GridDragGrid dragGrid = new GridDragGrid(this.MrpDetailGridEx.GridView, gridEx.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted); } // 加载配置查询条件 if (Model != null && Model.IsDetailSearch) { plBottom.Visible = true; MyControl searchObj = new MyControl(model.DetailSql, gridEx); if (!dataCaches.GetValue(gridEx, "CustomQueryFields", out DataTable dtCustomQueryFields)) { dtCustomQueryFields = BaseModuleImpl.GetCustomQueryFields(model.FormKey); } plBottom.Height = searchObj.InitSearchControl(dtCustomQueryFields, plBottom); } page.Tag = gridEx; page.Controls.AddRange(new PanelControl[] { plBottom, plMain }); } else if (isMeage.Count() > 1 && isGridmerge) { DetaiName = model.DetailName; TabMultipledetails tabMultipledetails = hasControl && control is TabMultipledetails ? (TabMultipledetails)control : new TabMultipledetails(); tabMultipledetails.Model = this.Model; tabMultipledetails.ParentGridEx = this.ParentGridEx; tabMultipledetails.ParentControlEx = this.ParentControlEx; tabMultipledetails.IsDragDetail = this.IsDragDetail; tabMultipledetails.Model = this.Model; tabMultipledetails.DrgaParentPrimaryKey = this.DrgaParentPrimaryKey; tabMultipledetails.InitTabPages(isMeage); tabMultipledetails.Dock = DockStyle.Fill; tabMultipledetails.Tag = model; page.Tag = tabMultipledetails; page.Controls.Add(tabMultipledetails); } else { ModuleGridEx gridEx = hasControl && control is ModuleGridEx ? (ModuleGridEx)control : new ModuleGridEx(); if (!dataCaches.GetValue(gridEx, "DynamicModel", out DynamicModel dyncModel)) { dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, model.UnionModule, "0" }); } if (!dataCaches.GetValue(gridEx, "SystemDllRow", out DataRow moduleInformation)) { moduleInformation = MainImpl.GetSystemdllTab(model.UnionModule); } if (moduleInformation == null) { MessageUtil.Show("没有找到编号为" + model.UnionModule + "的模块信息"); return; } if (!dataCaches.GetValue(gridEx, "SysModel", out model.SystemModel)) { model.SystemModel = new ModuleModel(moduleInformation); } if (Model != null) { if (!dataCaches.GetValue(gridEx, "ParentPrimaryKey", out string primaryKey)) { primaryKey = BaseImpl.GetBasePrimaryKey(Model.ModuleCode); } model.SystemModel.ParmaryKey = primaryKey; } gridEx.OnSaveGridCallBack += OnDetailSaveGridCallBack; gridEx.DetailRightGridCallBack += OnDetailRightCallback; gridEx.Name = "gridEx"; gridEx.IsDetail = true; gridEx.Dock = DockStyle.Fill; gridEx.OperShortMode = Model.IsDetailSearch; // 不显示简短模式 gridEx.VisibleSearchPanel = Model.IsDetailSearch || model.DetailSearch; if (!dataCaches.GetValue(gridEx, "UnionBaseGridRightMenus", out DataTable rightDt)) { rightDt = BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn); } if ((rightDt != null && rightDt.Rows.Count > 0) || this.isMrpDetail) { this.isMrpDetail = true; gridEx.VisibleMrpSearchPanel = true; } gridEx.VisibleOperPanel = !model.IsReadOnly; gridEx.InitializeControl(model.SystemModel, dyncModel); gridEx.GridControlObj.Tag = model; gridEx.ParentControlEx = this.ParentControlEx; gridEx.ParentGridEx = this.ParentGridEx; gridEx.ParentKeyField = string.IsNullOrEmpty(model.UnionParentField) ? model.SystemModel.ParmaryKey : model.UnionParentField; gridEx.DetailKeyField = model.UnionValue; gridEx.GridControlObj.ParentControl = gridEx.SearchObj; if (model.IsCheck == 1)//加载复选框 { GridDragGrid.GridAddCheckBox(gridEx.GridControlObj.GridView); } if (model.LoadFilter)//加载筛选行 { gridEx.GridControlObj.GridView.OptionsView.ShowAutoFilterRow = true; } if (this.ParentGridEx != null && model.IsDrag)//IsDragDetail && { gridEx.GridControlObj.GridView.DoubleClick += OnDetailGridViewDoubleClick; // 拖拽模式,绑定拖拽对象 if (model.IsDrag) { GridDragGrid dragGrid = new GridDragGrid(gridEx.GridControlObj.GridView, this.ParentGridEx.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted); } } if (this.MrpParentGridEx != null && model.IsMrpDrag)//mrp拖拽 { GridDragGrid dragGrid = new GridDragGrid(this.MrpParentGridEx.GridView, gridEx.GridControlObj.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted); } if (this.MrpDetailGridEx != null && model.IsMrpDrag)//mrp拖拽 { GridDragGrid dragGrid = new GridDragGrid(this.MrpDetailGridEx.GridView, gridEx.GridControlObj.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted); } if (this.isMrpDetail && this.OnMrpBtnClickCallback != null)//当前为mrp模块 { gridEx.RightGridCallBack += this.OnMrpBtnClickCallback; } if (model.AutoRefresh && !_UnRefresh && isGridmerge) gridEx.SearchObj.SearchGrid(); page.Tag = gridEx.GridControlObj; page.Controls.Add(gridEx); } } this.xtc_container.TabPages.Add(page); DetailTabPageModel detailTabPageModel = new DetailTabPageModel(); detailTabPageModel.TabPageIndex = this._gridDetail.IndexOf(model); detailTabPageModel.DetailTabPage = page; detailTabPageModel.DetailModel = model; if (!string.IsNullOrEmpty(model.ParentModuleCode)) { if (this.DetailTabPagesDic.ContainsKey(model.ParentModuleCode)) { List detailTabPageModels = this.DetailTabPagesDic[model.ParentModuleCode]; detailTabPageModels.Add(detailTabPageModel); } else { List detailTabPageModels = new List(); detailTabPageModels.Add(detailTabPageModel); this.DetailTabPagesDic.Add(model.ParentModuleCode, detailTabPageModels); } } } } /// /// 获取数据源缓存 /// /// /// /// /// public void GetDataCaches(Dictionary cachesDic, bool isGridmerge = true, bool isAddPages = false) { //获取通用数据 Task dynamicModelTask = cachesDic.GetTask(this, "DynamicModel"); Task> detailsTask = cachesDic.GetTask>(this, "Details"); DynamicModel dynamicModel = dynamicModelTask.Result; List details = detailsTask.Result; string DetaiName = string.Empty; PageControlsDic.Clear(); foreach (GridDetailModel model in details) { if (DetaiName.Equals(model.DetailName) && isGridmerge) { continue; } List isMeage = details.Cast().Where(x => x.DetailName.Equals(model.DetailName)).ToList(); if (model.IsChart) { ChartControlEx chartEx = new ChartControlEx(); Task chartParamsTask = cachesDic.AddTask(chartEx, "ChartParams", new Task(() => { return BaseModuleImpl.GetChartParams(model.FormKey); })); Task chartRightMenusTask = cachesDic.AddTask(chartEx, "ChartRightMenus", new Task(() => { return BaseModuleImpl.GetBaseGridRightMenus(model.FormKey); })); PageControlsDic.Add(model, chartEx); } else if (model.IsExcel) { ExcelControlEx excelEx = new ExcelControlEx(); PageControlsDic.Add(model, excelEx); } else if (model.IsWebView) { if (SystemInfo.Instance.PrimitiveBrowser) { FrmMiniBlink webView = new FrmMiniBlink(); PageControlsDic.Add(model, webView); } else { FrmWebBrowser webView = new FrmWebBrowser(); PageControlsDic.Add(model, webView); } } else if (model.IsWebView2) { if (SystemInfo.Instance.PrimitiveBrowser) { FrmMiniBlink webView = new FrmMiniBlink(); PageControlsDic.Add(model, webView); } else { FrmWebBrowser2 webView = new FrmWebBrowser2(); PageControlsDic.Add(model, webView); } } else if (model.IsWebView3) { if (SystemInfo.Instance.PrimitiveBrowser) { FrmMiniBlink webView = new FrmMiniBlink(); PageControlsDic.Add(model, webView); } else { FrmWebBrowser2 webView = new FrmWebBrowser2(); PageControlsDic.Add(model, webView); } } else if (model.IsAddPanel && isGridmerge) { ModulePanelEx modulePanel = new ModulePanelEx(); Task basePrimaryKeyTask = cachesDic.AddTask(modulePanel, "BasePrimaryKey", new Task(() => { return BaseImpl.GetBasePrimaryKey(dynamicModel.ModuleCode); })); Task systemdllTabTask = cachesDic.AddTask(modulePanel, "SystemDllRow", new Task(() => { return MainImpl.GetSystemdllTab(dynamicModel.ModuleCode); })); modulePanel.GetDataCaches(cachesDic, new ModuleModel(systemdllTabTask.Result), dynamicModel); PageControlsDic.Add(model, modulePanel); } else if (model.IsDetailView) { ModuleGridDetailEx DetailEx = new ModuleGridDetailEx(); Task detailViewDynamicModelTask = cachesDic.AddTask(DetailEx, "DynamicModel", new Task(() => { DynamicModuleModel dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, dynamicModel.Privilege, model.UnionModule, "0" }); dyncModel.DataCaches = cachesDic; return dyncModel; })); Task basePrimaryKeyTask = cachesDic.AddTask(DetailEx, "BasePrimaryKey", new Task(() => { return BaseImpl.GetBasePrimaryKey(dynamicModel.ModuleCode); })); Task detailViewSystemDllRowTask = cachesDic.AddTask(DetailEx, "SystemDllRow", new Task(() => { return MainImpl.GetSystemdllTab(model.UnionModule); })); if (detailViewSystemDllRowTask.Result == null) { return; } Task detailViewSystemModelTask = cachesDic.AddTask(DetailEx, "SysModel", new Task(() => { return new ModuleModel(detailViewSystemDllRowTask.Result); })); Task> detailViewDetailsTask = cachesDic.AddTask(DetailEx, "Details", new Task>(() => { return GetDetails(detailViewSystemModelTask.Result.ModeCode);//底部多标签表格数据 })); Task baseGridRightMenusTask = cachesDic.AddTask(DetailEx, "BaseGridRightMenus", new Task(() => { return BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn); })); DetailEx.GetDataCaches(cachesDic); PageControlsDic.Add(model, DetailEx); } else { if (model.IsReadOnly && isMeage.Count() == 1) { GridControlEx gridEx = model.AutoMultiHeader == 1 ? new BandedGridControlEx() : new GridControlEx(); Task hasExistsSettingTableTask = cachesDic.AddTask(gridEx, "HasExistsSettingTable", new Task(() => { return BaseImpl.HasExistsTable(ResourceKeys.SettingTableName); })); Task setGridRightMenusTask = cachesDic.AddTask(gridEx, "RightMenuBtn", new Task(() => { return BaseModuleImpl.GetBaseGridRightMenus(dynamicModel.ModuleCode); })); Task sourceColumnByDatabaseTask = cachesDic.AddTask(gridEx, "CustomColumnByDatabase", new Task(() => { string customColumKey = model.GridCustomColumnKey; return gridEx.GridView.GetCustomColumnByDatabase(customColumKey); })); Task baseGridRightMenusTask = cachesDic.AddTask(gridEx, "BaseGridRightMenus", new Task(() => { return BaseModuleImpl.GetBaseGridRightMenus(model.FormKey); })); Task baseGridRowColorsTask = cachesDic.AddTask(gridEx, "BaseGridRowColors", new Task(() => { return BaseModuleImpl.GetBaseGridRowColors(model.FormKey); })); // 加载配置查询条件 if (dynamicModel != null && dynamicModel.IsDetailSearch) { Task customQueryFieldsTask = cachesDic.AddTask(gridEx, "CustomQueryFields", new Task(() => { return BaseModuleImpl.GetCustomQueryFields(model.FormKey); })); } PageControlsDic.Add(model, gridEx); } else if (isMeage.Count() > 1 && isGridmerge) { DetaiName = model.DetailName; TabMultipledetails tabMultipledetails = new TabMultipledetails(); PageControlsDic.Add(model, tabMultipledetails); //tabMultipledetails.InitTabPages(isMeage); } else { ModuleGridEx gridEx = new ModuleGridEx(); Task gridExDynamicModelTask = cachesDic.AddTask(gridEx, "DynamicModel", new Task(() => { DynamicModuleModel dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, dynamicModel.Privilege, model.UnionModule, "0" }); dyncModel.DataCaches = cachesDic; return dyncModel; })); Task gridExSystemDllRowTask = cachesDic.AddTask(gridEx, "SystemDllRow", new Task(() => { return MainImpl.GetSystemdllTab(model.UnionModule); })); Task gridExSystemModelTask = cachesDic.AddTask(gridEx, "SysModel", new Task(() => { return new ModuleModel(gridExSystemDllRowTask.Result); })); if (dynamicModel != null) { Task basePrimaryKeyTask = cachesDic.AddTask(gridEx, "ParentPrimaryKey", new Task(() => { string basePrimaryKey = BaseImpl.GetBasePrimaryKey(dynamicModel.ModuleCode); return basePrimaryKey; })); } Task baseGridRightMenusTask = cachesDic.AddTask(gridEx, "UnionBaseGridRightMenus", new Task(() => { return BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn); })); gridEx.GetDataCaches(cachesDic); if (model.AutoRefresh && !_UnRefresh && isGridmerge) { //gridEx.SearchObj.SearchGrid(); } PageControlsDic.Add(model, gridEx); } } } } /// /// 页签大小改变时 /// /// /// private void OnPageSizeChanged(object sender, EventArgs e) { XtraTabPage tabPage = (XtraTabPage)sender; if (tabPage.Tag is FrmWebBrowser) { // 加载网页 FrmWebBrowser webView = tabPage.Tag as FrmWebBrowser; } else if (tabPage.Tag is FrmWebBrowser2) { // 加载网页 FrmWebBrowser2 webView = tabPage.Tag as FrmWebBrowser2; } } /// /// 说明:特殊情况绑定选项卡 /// 创建人:龚宇超 /// 创建日期:2018-04-04 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The grid detail. /// The parent value. public void InitTabPages(List gridDetail, string parentValue) { this._gridDetail = gridDetail; this.xtc_container.TabPages.Clear(); bool ProcessExists = (Lskj.Data.Caches.CacheSYSConfig.Instance().JudgeProcessExists() && SystemInfo.Instance.isExecload); foreach (GridDetailModel model in this._gridDetail) { XtraTabPage page = new XtraTabPage(); page.Text = model.DetailName; if (model.IsChart) { ChartControlEx chartEx = new ChartControlEx(); chartEx.Dock = DockStyle.Fill; if (ProcessExists) { chartEx.SetCharts(Lskj.Data.Caches.CacheSYSConfig.Instance().GetCustomQueryFields()); chartEx.SetChartRightMenus(Lskj.Data.Caches.CacheSYSConfig.Instance().GetBaseGridRightMenus(), this.Model, OnGridViewRightCallBack); } else { chartEx.SetCharts(BaseModuleImpl.GetChartParams(model.FormKey)); chartEx.SetChartRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); } chartEx.Tag = model; page.Tag = chartEx; page.Controls.Add(chartEx); } else if (model.IsExcel) { ExcelControlEx excelEx = new ExcelControlEx(); excelEx.Dock = DockStyle.Fill; excelEx.Tag = model; page.Tag = excelEx; page.Controls.Add(excelEx); } else { if (model.IsReadOnly) { PanelControl plTop = new PanelControl(); plTop.Dock = DockStyle.Top; PanelControl plMain = new PanelControl(); plMain.Dock = DockStyle.Fill; GridControlEx gridEx = new GridControlEx(); gridEx.Dock = DockStyle.Fill; gridEx.Tag = model; gridEx.Parent = plMain; gridEx.Model = this.Model; gridEx.SetReadOnlyColumns(model.GridColumns, model.GridCustomColumnKey); if (ProcessExists) { gridEx.SetGridRightMenus(Lskj.Data.Caches.CacheSYSConfig.Instance().GetBaseGridRightMenus(), this.Model, OnGridViewRightCallBack); gridEx.SetGridRowColors(Lskj.Data.Caches.CacheSYSConfig.Instance().GetCustomColumnByDatabase()); } else { gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey)); } // 加载配置查询条件 if (model.IsSearch) { MyControl searchObj = new MyControl(model.DetailSql, gridEx); if (!string.IsNullOrEmpty(model.UnionValue) && !string.IsNullOrEmpty(parentValue)) searchObj.WhereCond = string.Format(" and {0}='{1}'", model.UnionValue, parentValue); plTop.Height = searchObj.InitSearchControl(BaseModuleImpl.GetCustomQueryFields(model.SystemModel.CondKey), plTop); } page.Tag = gridEx; page.Controls.AddRange(new PanelControl[] { plTop, plMain }); } else { DynamicModel dyncModel = new DynamicModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, model.UnionModule, "0" }); dyncModel.Params = Model.OtherParams(); //if (ProcessExists) //{ // model.SystemModel = new ModuleModel(Lskj.Data.Caches.CacheSYSConfig.Instance().GetSystemdllTab()); //} //else //{ // model.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(model.UnionModule)); //} DataRow moduleInformation = ProcessExists ? Lskj.Data.Caches.CacheSYSConfig.Instance().GetSystemdllTab() : MainImpl.GetSystemdllTab(model.UnionModule); if (moduleInformation == null) { MessageUtil.Show("没有找到编号为" + model.UnionModule + "的模块信息"); return; } model.SystemModel = new ModuleModel(moduleInformation); ModuleGridEx gridEx = new ModuleGridEx(); gridEx.Name = "gridEx"; gridEx.Dock = DockStyle.Fill; gridEx.OperShortMode = false; // 不显示简短模式 gridEx.VisibleSearchPanel = model.IsSearch; gridEx.VisibleOperPanel = true; gridEx.ParentGridEx = this.ParentGridEx; gridEx.ParentControlEx = this.ParentControlEx; gridEx.ParentKeyField = string.IsNullOrEmpty(model.UnionParentField) ? model.UnionValue : model.UnionParentField; gridEx.ParentKeyValue = parentValue; gridEx.DetailKeyField = model.UnionValue; gridEx.UnionKey = model.UnionValue; gridEx.UnionValue = parentValue; //Model.ObjectId; gridEx.InitializeControl(model.SystemModel, dyncModel); gridEx.GridControlObj.Tag = model; gridEx.ControlSql = ControlSql; gridEx.GridControlObj.ParentControl = gridEx.SearchObj; if (model.AutoRefresh) gridEx.SearchObj.SearchGrid(); page.Tag = gridEx.GridControlObj; page.Controls.Add(gridEx); } } this.xtc_container.TabPages.Add(page); } } /// /// 说明:加载tab标签里得明细数据 /// 创建人:王一帆 /// 创建日期:2018-09-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void GridView_RowCellClick(object sender, RowCellClickEventArgs e) { try { WaitForm.ShowForm(); XtraTabPage tabPage = this.xtc_container.SelectedTabPage; foreach (System.Windows.Forms.Control control in tabPage.Controls) { if (control is SplitContainer) { SplitContainer splitContainer = control as SplitContainer; ModuleGridEx gcMain = splitContainer.Panel1.Tag as ModuleGridEx; TabAddControl tabadd = splitContainer.Panel2.Tag as TabAddControl; GridDetailModel model = tabadd.gridEx.Tag as GridDetailModel; GridDetailModel model2 = tabadd.gridEx2.GridControlObj.Tag as GridDetailModel; DataRow rowItem = gcMain.GridControlObj.GridView.GetFocusedDataRow(); this.ModuleGridObj = gcMain; tabadd.PrimaryKey = this.ModuleGridObj.ParmaryKey; if (rowItem != null && model != null) { string searchSql = this.GetSearchSql(model, rowItem); tabadd.gridEx.LastSearchSql = searchSql; tabadd.gridEx.SetGridViewDataSource(MainImpl.GetDataTableResult(tabadd.gridEx.LastSearchSql)); string searchSql2 = this.GetSearchSql(model2, rowItem); tabadd.gridEx2.GridControlObj.LastSearchSql = searchSql2; tabadd.gridEx2.SearchObj.SearchLastGrid(); } } } } catch (Exception ex) { LogHelper.Instance.WriteError(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } finally { WaitForm.HideForm(); } } /// /// 说明:获取查询条件 /// 创建人:龚宇超 /// 创建日期:2017-11-22 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The model. /// The row item. /// System.String. protected string GetSearchSql(GridDetailModel model, DataRow rowItem) { string fieldName = !string.IsNullOrEmpty(model.UnionParentField) && rowItem.Table.Columns.Contains(model.UnionParentField) ? model.UnionParentField : ModuleGridObj.ParmaryKey; string sqlValue = model.IsReadOnly || model.IsChart ? model.DetailSql : model.SystemModel.MenuSql; sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue); if (ReplaceHelper.IsSelect(sqlValue) && !string.IsNullOrEmpty(model.UnionValue)) { sqlValue = ReplaceHelper.ReplaceWhereCond(sqlValue) + string.Format(" and {0}='{1}'", model.UnionValue, rowItem[fieldName] + ""); } return sqlValue; } /// /// 说明:判断多标签里是否有明细表 /// 创建人:王一帆 /// 创建日期:2019-12-19 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// List<GridDetailModel>. private List GetDetails(string ModuleCode) { List details = new List(); DataTable table = BaseModuleImpl.GetBaseDetailPages(ModuleCode); foreach (DataRow item in table.Rows) { DataTable gridColumns = ReportImpl.GetReportDetailColumns(ModuleCode, item["id"] + ""); details.Add(new GridDetailModel(item, gridColumns, GridCustomColumnStruct.BaseDetailGridView)); } return details; } /// /// 说明:获取TabPage绑定的实体对象 /// 创建人:龚宇超 /// 创建日期:2018-02-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tab page. /// GridDetailModel. public GridDetailModel GetGridDetailModel(XtraTabPage tabPage) { if (tabPage == null) return null; if (tabPage.Tag is GridControlEx) return (tabPage.Tag as GridControlEx).Tag as GridDetailModel; if (tabPage.Tag is ChartControlEx) return (tabPage.Tag as ChartControlEx).Tag as GridDetailModel; if (tabPage.Tag is ModuleWebView) return (tabPage.Tag as ModuleWebView).Tag as GridDetailModel; if (tabPage.Tag is FrmWebBrowser) return (tabPage.Tag as FrmWebBrowser).Tag as GridDetailModel; if (tabPage.Tag is FrmWebBrowser2) return (tabPage.Tag as FrmWebBrowser2).Tag as GridDetailModel; if (tabPage.Tag is FrmMiniBlink) return (tabPage.Tag as FrmMiniBlink).Tag as GridDetailModel; if (tabPage.Tag is TabMultipledetails) return (tabPage.Tag as TabMultipledetails).Tag as GridDetailModel; return null; } /// /// 说明:获取选中TabPage绑定的实体对象 /// 创建人:龚宇超 /// 创建日期:2018-02-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// GridDetailModel. public GridDetailModel GetFocusTabPageGridDetailModel() { return this.GetGridDetailModel(this.xtc_container.SelectedTabPage); } /// /// 说明:设置指定TabPage数据源 /// 创建人:龚宇超 /// 创建日期:2018-01-15 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tab page. /// The row item. public void SetGridDataSource(XtraTabPage tabPage, DataTable table, GridView view = null) { try { if (tabPage == null) return; if (tabPage.Tag is GridControlEx) { this.SetGridViewTabPage(tabPage, table); } else if (tabPage.Tag is ChartControlEx) { this.SetChartViewTabPage(tabPage, table, view); } else if (tabPage.Tag is TabMultipledetails) { this.SetTabMultipledetailsTabPage(tabPage, table); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); LogHelper.Instance.WriteError(ex); } } public void SetGridDataSource(XtraTabPage tabPage, string sqlValue, GridView view = null) { try { if (tabPage == null) return; DataTable table = MainImpl.GetDataTableResult(sqlValue); if (tabPage.Tag is GridControlEx) { this.SetGridViewTabPage(tabPage, table); } else if (tabPage.Tag is ChartControlEx) { this.SetChartViewTabPage(tabPage, table, view); } else if (tabPage.Tag is FrmWebBrowser) { this.SetWebUrlTabPage(tabPage, sqlValue); } else if (tabPage.Tag is FrmWebBrowser2) { this.SetWebUrlTabPage2(tabPage, sqlValue); } else if (tabPage.Tag is FrmMiniBlink) { this.SetMiniBlinkWebUrlTabPage(tabPage, sqlValue); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); LogHelper.Instance.WriteError(ex); } } /// /// 说明:设置选中TabPage数据源 /// 创建人:龚宇超 /// 创建日期:2018-02-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The table. public void SetGridDataSource(DataTable table) { this.SetGridDataSource(this.xtc_container.SelectedTabPage, table); } /// /// 说明:设置表格数据 /// 创建人:龚宇超 /// 创建日期:2018-01-29 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tab page. /// The grid control. protected void SetGridViewTabPage(XtraTabPage tabPage, DataTable table) { GridControlEx gridControl = tabPage.Tag as GridControlEx; GridDetailModel model = gridControl.Tag as GridDetailModel; int dataRowCount = 0; gridControl.GridView.DoubleClick -= new EventHandler(OnGridCompleted); if (gridControl is TreeGridControlEx) { TreeGridControlEx treeGridControlEx = gridControl as TreeGridControlEx; treeGridControlEx.SetGridViewDataSource(table, false); dataRowCount = (treeGridControlEx.TreeListObj.DataSource as DataTable).Rows.Count; //treeGridControlEx.TreeListObj.ExpandAll(); } else { gridControl.SetGridViewDataSource(table); dataRowCount = gridControl.GridView.DataRowCount; } if (IsDragDetail && this.ParentGridEx != null && model.IsDrag) { gridControl.GridView.DoubleClick += new EventHandler(OnGridCompleted); } tabPage.Text = gridControl.CustomGroupBandEx != null ? model.DetailName + "(" + gridControl.CustomGroupBandEx.DataRowCount() + "条)" : model.DetailName + "(" + dataRowCount + ")"; tabPage.Appearance.Header.ForeColor = dataRowCount > 0 ? Color.Red : Color.FromArgb(0, 0, 0); } /// /// 说明:设置左右结构的表格数据 /// 创建人:龚宇超 /// 创建日期:2018-01-29 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tab page. /// The grid control. protected void SetTabMultipledetailsTabPage(XtraTabPage tabPage, DataTable table) { TabMultipledetails tabMultipledetails = tabPage.Tag as TabMultipledetails; GridControlEx grdExMain = (tabMultipledetails.SplitMain.Panel1.Tag as GridControlEx); GridDetailModel MainModel = grdExMain.Tag as GridDetailModel; grdExMain.SetGridViewDataSource(table); GridControlEx grdExAdditional = (tabMultipledetails.SplitMain.Panel2.Tag as GridControlEx); grdExAdditional.SetGridViewDataSource(table); tabPage.Text = MainModel.DetailName + "(" + table.Rows.Count + ")"; tabPage.Appearance.Header.ForeColor = table.Rows.Count > 0 ? Color.Red : Color.FromArgb(0, 0, 0); } /// /// 说明:设置图表数据 /// 创建人:龚宇超 /// 创建日期:2018-01-29 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tab page. /// The chart control. protected void SetChartViewTabPage(XtraTabPage tabPage, DataTable table, GridView view = null) { ChartControlEx chartEx = tabPage.Tag as ChartControlEx; GridDetailModel model = chartEx.Tag as GridDetailModel; chartEx.CreateChart(table, view); } /// /// 说明:设置网页Url /// 创建人:龚宇超 /// 创建日期:2018-01-29 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tab page. /// The chart control. protected void SetWebUrlTabPage(XtraTabPage tabPage, string Url) { FrmWebBrowser webBrowser = tabPage.Tag as FrmWebBrowser; webBrowser.LoadUrl(Url); } protected void SetWebUrlTabPage2(XtraTabPage tabPage, string Url) { FrmWebBrowser2 webBrowser = tabPage.Tag as FrmWebBrowser2; webBrowser.LoadUrl(Url); } protected void SetMiniBlinkWebUrlTabPage(XtraTabPage tabPage, string Url) { FrmMiniBlink webBrowser = tabPage.Tag as FrmMiniBlink; webBrowser.LoadUrl(Url); } /// /// 说明: /// 创建人:龚宇超 /// 创建日期:2018-02-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnGridViewRightCallBack(object sender, EventArgs e) { try { if (this.OnRightCallback != null) this.OnRightCallback(sender, e); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:表格双击完成 /// 创建人:王一帆 /// 创建日期:2019-08-29 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The e. protected void OnGridCompleted(object sender, EventArgs e) { try { XtraTabPage tabPage = this.xtc_container.SelectedTabPage; GridControlEx ge = tabPage.Tag as GridControlEx; DataRow[] rowItems = new DataRow[] { ge.GridView.GetFocusedDataRow() }; GridColumnCollection gridColumns = this.ParentGridEx.GridView.Columns; DataTable table = this.ParentGridEx.gridControl.DataSource as DataTable; foreach (DataRow rowItem in rowItems) { DataRow newRow = table.NewRow(); foreach (GridColumn col in gridColumns) { if ("id".Equals(col.FieldName) || col.FieldName.Equals(this.DrgaParentPrimaryKey)) 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(model.DefaultValue)) { newRow[col.FieldName] = fieldValue; } } } table.Rows.Add(newRow); } this.ParentGridEx.GridView.ClearSelection(); this.ParentGridEx.GridView.SelectRowHandler(table.Rows.Count - 1); this.ParentGridEx.GridView.UpdateCurrentRow(); this.ParentGridEx.GridView.ShowEditor(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); LogHelper.Instance.WriteError(ex); // MessageUtil.Show(ResourceKeys.OperFault); } } /// /// 说明:表格拖拽完成 /// 创建人:龚宇超 /// 创建日期:2017-11-14 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The e. protected void OnDragGridCompleted(object sender, GridDragGridArgs e) { if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0 || this.ParentGridEx == null) return; try { if (OnDragCompleteCallback != null) { OnDragCompleteCallback(sender, e); } else { if (MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes) { GridColumnCollection gridColumns = this.ParentGridEx.GridView.Columns; DataTable table = this.ParentGridEx.gridControl.DataSource as DataTable; foreach (DataRow rowItem in e.GridViewSelectRows) { DataRow newRow = table.NewRow(); foreach (GridColumn col in gridColumns) { if ("id".Equals(col.FieldName) || col.FieldName.Equals(this.DrgaParentPrimaryKey)) 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(model.DefaultValue)) { newRow[col.FieldName] = fieldValue; } } } table.Rows.Add(newRow); } this.ParentGridEx.GridView.ClearSelection(); this.ParentGridEx.GridView.SelectRowHandler(table.Rows.Count - 1); this.ParentGridEx.GridView.UpdateCurrentRow(); this.ParentGridEx.GridView.ShowEditor(); } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); LogHelper.Instance.WriteError(ex); // MessageUtil.Show(ResourceKeys.OperFault); } } /// /// 说明:表格拖拽完成 /// 创建人:龚宇超 /// 创建日期:2017-11-14 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The e. protected void OnMrpDragGridCompleted(object sender, GridDragGridArgs e) { if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0 || this.MrpParentGridEx == null) return; try { if (MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes) { GridColumnCollection gridColumns = e.TargetGridViewObj.Columns; DataTable table = e.TargetGridViewObj.GridControl.DataSource as DataTable; ModuleModel mrpMainModule = e.SourceGridViewObj.Tag as ModuleModel; GridControlEx gridControlEx = e.TargetGridViewObj.GridControl.Parent.Parent as GridControlEx; GridDetailModel gridDetailModel = gridControlEx.Tag as GridDetailModel; //if (table == null) //{ // gridControlEx.ParentControl.SearchGrid(); // table = e.TargetGridViewObj.GridControl.DataSource as DataTable; //} // 验证删除存储过程 string tipMsg = string.Empty; int[] records = new int[e.GridViewSelectRows.Length]; string ParmaryKey = mrpMainModule.ParmaryKey; for (int i = 0; i < e.GridViewSelectRows.Length; i++) { DataRow item = e.GridViewSelectRows[i]; try { string outMsg = ""; records[i] = BaseImpl.getMrpPlanAdd(mrpMainModule.ModeCode, item[ParmaryKey] + "", out outMsg); tipMsg += outMsg; } catch (Exception ex) { LogHelper.Instance.WriteError(ex); //MessageUtil.Show("表格拖拽出错!" + ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } //int successCount = records.Contains(1) ? records.Where(x => x == 1).Count() : 0; //int faultCount = records.Contains(0) ? records.Where(x => x == 0).Count() : 0; //string Msg = string.Empty; //string filepath = string.Empty; //string paramstr = string.Empty; //if (successCount > 0) Msg = string.Format(ResourceKeys.DragSuccessCount, successCount); //if (faultCount > 0) Msg += successCount > 0 ? "\r\n" : "" + string.Format(ResourceKeys.DragFaultCount, faultCount); //Msg = string.IsNullOrWhiteSpace(Msg) ? tipMsg : Msg; if (!string.IsNullOrWhiteSpace(tipMsg)) { MessageUtil.Show(tipMsg); } if (this.OnMrpDragCallback != null) { OnMrpDragCallback(gridControlEx, null); } if (table == null) table = e.TargetGridViewObj.GridControl.DataSource as DataTable; if (table != null) { e.TargetGridViewObj.ClearSelection(); e.TargetGridViewObj.SelectRowHandler(table.Rows.Count - 1); e.TargetGridViewObj.UpdateCurrentRow(); e.TargetGridViewObj.ShowEditor(); } //gridControlEx.ParentControl.SearchGrid(); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); LogHelper.Instance.WriteError(ex); // MessageUtil.Show(ResourceKeys.OperFault); } } /// /// 设置动态列 /// /// /// public void SetGridDisplayColumns(XtraTabPage tabPage, string ColumnName) { try { if (tabPage == null) return; if (tabPage.Tag is GridControlEx) { GridControlEx gridControl = tabPage.Tag as GridControlEx; gridControl.SetDisplayColumns(ColumnName); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); LogHelper.Instance.WriteError(ex); } } /// /// 拖拽模式DetailView明细表双击 /// /// /// private void OnDetailGridViewDoubleClick(object sender, EventArgs e) { if (OnDetailViewDoubleClickCallBack != null) { OnDetailViewDoubleClickCallBack("Detail", null); } } /// /// 提示保存所有页签中有修改的数据 /// public bool CheckIfSaved() { try { foreach (XtraTabPage tabPage in this.TabControlObj.TabPages) { if (tabPage.Tag is GridControlEx && (tabPage.Tag as GridControlEx).IsDataNotSaved()) { GridDetailModel model = this.GetGridDetailModel(tabPage); DialogResult dialog = MessageUtil.Show(string.Format("{0}有数据未保存,是否保存", model.DetailName), MessageBoxButtons.YesNo); if (dialog == DialogResult.Yes) { Object moduleObject = tabPage.Controls.Cast().FirstOrDefault(); if (moduleObject is ModuleGridEx)