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 Lskj.Control; using Lskj.Business; using Lskj.Data; using DevExpress.XtraGrid.Columns; using Lskj.Util; using Lskj.Control.Model; using Lskj.Business.Impl; using DevExpress.XtraTab; using Lskj.Model; using DevExpress.XtraEditors; using DevExpress.XtraGrid.Views.Grid; namespace Lskj.PubModuleDetail3 { public partial class TabIntoControl : TabControlEx { /// /// 是否加载明细刷新 /// /// 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; /// /// The system model /// public DynamicModel Model; /// /// 父表格 /// public GridControlEx ParentGridEx; /// /// 父容器 /// public MyControl ParentControlEx; /// /// 明细数据里的主表格 /// public ModuleGridEx ModuleGridObj; /// /// 选项卡 /// public XtraTabControl TabIntoControlObj { get { return this.xtc_container; } } /// /// 右键菜单执行后调用 /// /// The sender. public event EventHandler OnRightCallback; /// /// 在保存网格回调 /// /// The sender. public event EventHandler OnDetailRightCallback; /// /// 表格保存执行后调用 /// /// The sender. public event EventHandler OnAllGridCallback; /// /// 分割条 /// public SplitContainerControl splitContainer { get; set; } /// /// 初始化完成 /// private bool _isInitFinish; public TabIntoControl() { InitializeComponent(); } /// /// 说明:绑定选项卡 /// 创建人:龚宇超 /// 创建日期:2018-01-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void InitTabPages(List gridDetail) { this._gridDetail = gridDetail; this.xtc_container.TabPages.Clear(); 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; 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 plBottom = new PanelControl(); plBottom.Visible = false; plBottom.Dock = DockStyle.Bottom; 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); gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey)); if (model.IsCheck == 1) GridDragGrid.GridAddCheckBox(gridEx.GridView); if (IsDragDetail && this.ParentGridEx != null && model.IsDrag) { // 拖拽模式,绑定拖拽对象 GridDragGrid dragGrid = new GridDragGrid(gridEx.GridView, this.ParentGridEx.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted); } // 加载配置查询条件 if (model.IsSearch) { plBottom.Visible = true; MyControl searchObj = new MyControl(model.DetailSql, gridEx); plBottom.Height = searchObj.InitSearchControl(BaseModuleImpl.GetCustomQueryFields(model.SystemModel.CondKey), plBottom); } page.Tag = gridEx; page.Controls.AddRange(new PanelControl[] { plBottom, plMain }); } else { DynamicModel dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, "1", model.UnionModule, "0" }); model.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(model.UnionModule)); if (Model != null) model.SystemModel.ParmaryKey = BaseImpl.GetBasePrimaryKey(Model.ModuleCode); ModuleGridEx gridEx = new ModuleGridEx(); if (model.SystemModel.RefreshDetails) { gridEx.DetailRightGridCallBack += OnDetailRightCallback; } gridEx.GridControlObj.GridView.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CellSelect; gridEx.Name = "gridEx"; gridEx.IsDetail = true; gridEx.Dock = DockStyle.Fill; gridEx.OperShortMode = false; // 不显示简短模式 gridEx.VisibleSearchPanel = Model.IsDetailSearch; 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.OnSaveGridCallBack += new EventHandler(OnGridViewAllCallBack); if (model.IsCheck == 1) { GridDragGrid.GridAddCheckBox(gridEx.GridControlObj.GridView); //if (model.RecordDetailsCheckbox && // ParentGridEx?.GridView.OptionsSelection.MultiSelect == true) //{ // gridEx.TagName = model.DetailName; // gridEx.GridControlObj.GridView.SelectionChanged += GridView_SelectionChanged; //} } if (IsDragDetail && this.ParentGridEx != null && model.IsDrag) { // 拖拽模式,绑定拖拽对象 GridDragGrid dragGrid = new GridDragGrid(gridEx.GridControlObj.GridView, this.ParentGridEx.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted); } if (model.AutoRefresh && !_UnRefresh) gridEx.SearchObj.SearchGrid(); this._gridIntoDetail = GetDetails(model.UnionModule); if (_gridIntoDetail.Count > 0) { page.Tag = gridEx.GridControlObj; SplitContainerControl splitLeftControl = new SplitContainerControl(); splitLeftControl.Dock = DockStyle.Fill; splitContainer = splitLeftControl; splitLeftControl.Tag = model.UnionModule; splitLeftControl.SplitterPositionChanged += SplitLeftControl_SplitterMoved; TabIntoAddControl tabAdd = new TabIntoAddControl(); tabAdd.Model = dyncModel; //tabAdd.splitContainerControl.Horizontal = false;//上下结构 tabAdd.InitTabPages(_gridIntoDetail); tabAdd.Dock = DockStyle.Fill; splitLeftControl.Panel1.Controls.Add(gridEx); splitLeftControl.Panel2.Controls.Add(tabAdd); splitLeftControl.Panel1.Tag = gridEx; splitLeftControl.Panel2.Tag = tabAdd; page.Controls.AddRange(new SplitContainerControl[] { splitLeftControl }); gridEx.GridControlObj.GridView.RowCellClick += new DevExpress.XtraGrid.Views.Grid.RowCellClickEventHandler(GridView_RowCellClick); } else { page.Tag = gridEx.GridControlObj; page.Controls.Add(gridEx); } } } this.xtc_container.TabPages.Add(page); } InitSpliterPosition(); _isInitFinish = true; } /// /// 说明:特殊情况绑定选项卡 /// 创建人:龚宇超 /// 创建日期: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(); 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; 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); 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, "1", model.UnionModule, "0" }); model.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(model.UnionModule)); 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; 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 SplitContainerControl) { SplitContainerControl splitContainer = control as SplitContainerControl; ModuleGridEx gcMain = splitContainer.Panel1.Tag as ModuleGridEx; TabIntoAddControl tabadd = splitContainer.Panel2.Tag as TabIntoAddControl; GridDetailModel model = null; if (tabadd.splitContainerControl.Panel1.Tag is ModuleGridEx) { model = tabadd.gridEx.GridControlObj.Tag as GridDetailModel; } if (tabadd.splitContainerControl.Panel1.Tag is GridControlEx) { model = tabadd.gridControlEx.Tag as GridDetailModel; } GridDetailModel model2 = null; if (tabadd.splitContainerControl.Panel2.Tag is ModuleGridEx) { model2 = tabadd.gridEx2.GridControlObj.Tag as GridDetailModel; } if (tabadd.splitContainerControl.Panel2.Tag is GridControlEx) { model2 = tabadd.gridControlEx2.Tag as GridDetailModel; } DataRow rowItem = gcMain.GridControlObj.GridView.GetFocusedDataRow(); this.ModuleGridObj = gcMain; tabadd.PrimaryKey = this.ModuleGridObj.ParmaryKey; if (rowItem != null) { if (model != null) { string searchSql = this.GetSearchSql(model, rowItem); if (tabadd.splitContainerControl.Panel1.Tag is ModuleGridEx) { tabadd.gridEx.GridControlObj.LastSearchSql = searchSql; tabadd.gridEx.SearchObj.SearchLastGrid(); } if (tabadd.splitContainerControl.Panel1.Tag is GridControlEx) { tabadd.gridControlEx.LastSearchSql = searchSql; tabadd.gridControlEx.SetGridViewDataSource(MainImpl.GetDataTableResult(searchSql)); } } if (model2 != null) { string searchSql2 = this.GetSearchSql(model2, rowItem); if (tabadd.splitContainerControl.Panel2.Tag is ModuleGridEx) { tabadd.gridEx2.GridControlObj.LastSearchSql = searchSql2; tabadd.gridEx2.SearchObj.SearchLastGrid(); } if (tabadd.splitContainerControl.Panel2.Tag is GridControlEx) { tabadd.gridControlEx2.LastSearchSql = searchSql2; tabadd.gridControlEx2.SetGridViewDataSource(MainImpl.GetDataTableResult(searchSql2)); } } } else { if (model != null) { if (tabadd.splitContainerControl.Panel1.Tag is ModuleGridEx) { tabadd.gridEx.GridControlObj.gridControl.DataSource = null; } if (tabadd.splitContainerControl.Panel1.Tag is GridControlEx) { tabadd.gridControlEx.gridControl.DataSource = null; } } if (model2 != null) { if (tabadd.splitContainerControl.Panel2.Tag is ModuleGridEx) { tabadd.gridEx2.GridControlObj.gridControl.DataSource = null; } if (tabadd.splitContainerControl.Panel2.Tag is GridControlEx) { tabadd.gridControlEx2.gridControl.DataSource = null; } } } } } } catch (Exception ex) { LogHelper.Instance.WriteError(ex); //MessageUtil.Show("加载明细数据失败!" + 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; 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) { try { if (tabPage == null) return; if (tabPage.Tag is GridControlEx) { this.SetGridViewTabPage(tabPage, table); //GridView_RowCellClick(null,null); } else if (tabPage.Tag is ChartControlEx) { this.SetChartViewTabPage(tabPage, table); } } catch (Exception ex) { LogUtil.WriteError("TabPage配置错误-->" + tabPage.Text, ex); LogHelper.Instance.WriteError(ex); //MessageUtil.Show(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:设置指定TabPage中表格明细的数据源 /// 创建人:龚宇超 /// 创建日期:2018-01-15 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void SetGridDetailsDataSource() { GridView_RowCellClick(null, null); } /// /// 说明:设置选中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; gridControl.SetGridViewDataSource(table); gridControl.GridView.DoubleClick -= new EventHandler(OnGridCompleted); int dataRowCount = gridControl.GridView.DataRowCount; if (IsDragDetail && this.ParentGridEx != null && model.IsDrag) { gridControl.GridView.DoubleClick += new EventHandler(OnGridCompleted); } tabPage.Text = model.DetailName + "(" + dataRowCount + ")"; tabPage.Appearance.Header.ForeColor = gridControl.GridView.DataRowCount > 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) { ChartControlEx chartEx = tabPage.Tag as ChartControlEx; GridDetailModel model = chartEx.Tag as GridDetailModel; chartEx.CreateChart(table); } /// /// 说明: /// 创建人:龚宇超 /// 创建日期: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); } } /// /// 说明: /// 创建人:龚宇超 /// 创建日期:2018-02-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. protected void OnGridViewAllCallBack(object sender, EventArgs e) { try { if (this.OnAllGridCallback != null) this.OnAllGridCallback(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) { LogUtil.WriteError("表格双击移动错误", ex); LogHelper.Instance.WriteError(ex); // MessageUtil.Show(ResourceKeys.OperFault); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:表格拖拽完成 /// 创建人:龚宇超 /// 创建日期: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 (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) { LogUtil.WriteError("表格拖拽错误", ex); LogHelper.Instance.WriteError(ex); //MessageUtil.Show(ResourceKeys.OperFault); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:初始化分割条位置 /// 创建人:王一帆 /// 创建日期:2020-06-19 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitSpliterPosition() { if (this.splitContainer != null) { string spliterPosition = IniHelper.Read(string.Format("PubModuleDetail3RightLower_SplitterPositionMain_{0}", this.splitContainer.Tag + "")); if (!string.IsNullOrEmpty(spliterPosition)) this.splitContainer.SplitterPosition = Convert.ToInt32(spliterPosition); } } /// /// 说明:分割条位置改变事件 /// 创建人:王一帆 /// 创建日期:2020-06-19 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SplitLeftControl_SplitterMoved(object sender, EventArgs e) { try { if (_isInitFinish && this.splitContainer != null) { IniHelper.Write(string.Format("PubModuleDetail3RightLower_SplitterPositionMain_{0}", this.splitContainer.Tag + ""), this.splitContainer.SplitterPosition + ""); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } } }