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.Model; using Lskj.Model; using DevExpress.XtraReports.Design; using Lskj.Business.Impl; using DevExpress.XtraGrid.Views.Grid; using Lskj.Util; using DevExpress.XtraGrid.Columns; using Lskj.Business; using Lskj.Data; using DevExpress.XtraEditors; using Lskj.Control; namespace Lskj.PubModuleDetail5 { public partial class TabIntoAddControl : UserControl { /// /// 分割条 /// public SplitContainerControl splitContainerControl { get { return this.splitMainControl; } } /// /// 初始化完成 /// private bool _isInitFinish; /// /// 是否加载明细刷新 /// /// true if [_ un refresh]; otherwise, false. private bool _UnRefresh { get { return Model is DynamicModuleDetailModel || Model is DynamicModuleModel || Model is DynamicProductionModel; } } /// /// 表一 /// public ModuleGridEx gridEx = new ModuleGridEx(); /// /// 表二 /// public ModuleGridEx gridEx2 = new ModuleGridEx(); /// /// 表一(动态表) /// public GridControlEx gridControlEx = new GridControlEx(); /// /// 表二(动态表) /// public GridControlEx gridControlEx2 = new GridControlEx(); /// /// 拖拽模式 /// public bool IsDragDetail; /// /// 拖拽目标主键字段 /// public string DrgaParentPrimaryKey; /// /// 主键字段 /// public string PrimaryKey; /// /// 添加数据sql赋值 /// public string ControlSql; /// /// tab标签 /// private List _gridDetail; /// /// tab标签内页签 /// private List _gridDetail2; /// /// The system model /// public DynamicModel Model; /// /// 父表格 /// public GridControlEx ParentGridEx; /// /// 父容器 /// public MyControl ParentControlEx; /// /// 右键菜单执行后调用 /// /// The sender. public event EventHandler OnRightCallback; /// ///第一个模块的模块编号(Model拿不到,所以使用第一个模块的模块编号设置ini文件分割条编号,) /// public string ModuleNumber; public TabIntoAddControl() { InitializeComponent(); this.splitContainerControl.Horizontal = false;//上下结构 this.splitMainControl.SplitterPositionChanged += new System.EventHandler(this.splitContainer_SplitterPositionChanged); } /// /// 说明:绑定选项卡 /// 创建人:龚宇超 /// 创建日期:2018-01-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void InitTabPages(List gridDetail) { this._gridDetail = gridDetail; int i = 0; foreach (GridDetailModel model in this._gridDetail) { if (i == 0) { GroupBox groupBox = new GroupBox(); groupBox.Dock = DockStyle.Fill; groupBox.Text = model.DetailName; if (string.IsNullOrWhiteSpace(model.UnionModule)) { PanelControl plBottom = new PanelControl(); plBottom.Dock = DockStyle.Bottom; plBottom.Visible = false; PanelControl plMain = new PanelControl(); plMain.Dock = DockStyle.Fill; gridControlEx = new GridControlEx(); gridControlEx = model.AutoMultiHeader == 1 ? new BandedGridControlEx() : new GridControlEx(); gridControlEx.Dock = DockStyle.Fill; gridControlEx.Tag = model; gridControlEx.Parent = plMain; gridControlEx.Model = this.Model; gridControlEx.SetReadOnlyColumns(model.GridColumns, model.GridCustomColumnKey); //gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); //gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey)); gridControlEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); gridControlEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey)); if (Model != null && Model.IsDetailSearch) { plBottom.Visible = true; MyControl searchObj = new MyControl(model.DetailSql, gridControlEx); plBottom.Height = searchObj.InitSearchControl(BaseModuleImpl.GetCustomQueryFields(model.FormKey), plBottom); } groupBox.Controls.AddRange(new PanelControl[] { plBottom, plMain }); splitMainControl.Panel1.Tag = gridControlEx; } 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)); ModuleNumber = model.UnionModule; if (Model != null) model.SystemModel.ParmaryKey = BaseImpl.GetBasePrimaryKey(Model.ModuleCode); gridEx = new ModuleGridEx(); gridEx.Name = "gridEx1"; gridEx.Dock = DockStyle.Fill; gridEx.OperShortMode = false; // 不显示简短模式 gridEx.VisibleSearchPanel = false; gridEx.VisibleOperPanel = !model.IsReadOnly; gridEx.InitializeControl(model.SystemModel, dyncModel); gridEx.GridControlObj.Tag = model; gridEx.ParentControlEx = this.ParentControlEx; this.ParentGridEx = gridEx.GridControlObj; gridEx.ParentKeyField = string.IsNullOrEmpty(model.UnionParentField) ? model.SystemModel.ParmaryKey : model.UnionParentField; gridEx.DetailKeyField = model.UnionValue; if (model.AutoRefresh && !_UnRefresh) gridEx2.SearchObj.SearchGrid(); groupBox.Controls.Add(gridEx); splitMainControl.Panel1.Tag = gridEx; } splitMainControl.Panel1.Controls.Add(groupBox); } else { GroupBox groupBox2 = new GroupBox(); groupBox2.Dock = DockStyle.Fill; groupBox2.Text = model.DetailName; if (string.IsNullOrWhiteSpace(model.UnionModule)) { PanelControl plBottom = new PanelControl(); plBottom.Dock = DockStyle.Bottom; plBottom.Visible = false; PanelControl plMain = new PanelControl(); plMain.Dock = DockStyle.Fill; gridControlEx2 = new GridControlEx(); gridControlEx2 = model.AutoMultiHeader == 1 ? new BandedGridControlEx() : new GridControlEx(); gridControlEx2.Dock = DockStyle.Fill; gridControlEx2.Tag = model; gridControlEx2.Parent = plMain; gridControlEx2.Model = this.Model; gridControlEx2.SetReadOnlyColumns(model.GridColumns, model.GridCustomColumnKey); //gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); //gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey)); gridControlEx2.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack); gridControlEx2.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey)); if (Model != null && Model.IsDetailSearch) { plBottom.Visible = true; MyControl searchObj = new MyControl(model.DetailSql, gridControlEx2); plBottom.Height = searchObj.InitSearchControl(BaseModuleImpl.GetCustomQueryFields(model.FormKey), plBottom); } groupBox2.Controls.AddRange(new PanelControl[] { plBottom, plMain }); splitMainControl.Panel2.Tag = gridControlEx2; } 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); gridEx2 = new ModuleGridEx(); gridEx2.Name = "gridEx2"; gridEx2.Dock = DockStyle.Fill; gridEx2.OperShortMode = false; // 不显示简短模式 gridEx2.VisibleSearchPanel = false; gridEx2.VisibleOperPanel = !model.IsReadOnly; gridEx2.InitializeControl(model.SystemModel, dyncModel); gridEx2.GridControlObj.Tag = model; gridEx2.ParentControlEx = this.ParentControlEx; this.ParentGridEx = gridEx2.GridControlObj; gridEx2.ParentKeyField = string.IsNullOrEmpty(model.UnionParentField) ? model.SystemModel.ParmaryKey : model.UnionParentField; gridEx2.DetailKeyField = model.UnionValue; //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) gridEx2.SearchObj.SearchGrid(); groupBox2.Controls.Add(gridEx2); splitMainControl.Panel2.Tag = gridEx2; } splitMainControl.Panel2.Controls.Add(groupBox2); } i++; } InitSpliterPosition(); if (i==1) { splitMainControl.PanelVisibility = SplitPanelVisibility.Panel1; } _isInitFinish = true; } /// /// 说明: /// 创建人:龚宇超 /// 创建日期: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); } } /// /// 说明:加载tab标签里得明细数据 /// 创建人:王一帆 /// 创建日期:2018-09-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void GridView_DoubleClick(object sender, EventArgs e) { //try //{ // WaitForm.ShowForm(); // GridDetailModel model = gridEx2.GridControlObj.Tag as GridDetailModel; // DataRow rowItem = gridEx.GridView.GetFocusedDataRow(); // if (rowItem != null && model != null) // { // string searchSql = this.GetSearchSql(model, rowItem); // gridEx2.GridControlObj.LastSearchSql = searchSql; // gridEx2.GridControlObj.SetGridViewDataSource(MainImpl.GetDataTableResult(gridEx2.GridControlObj.LastSearchSql)); // } //} //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 : this.PrimaryKey; 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-08-29 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The e. protected void OnDoubleGridClic(object sender, EventArgs e) { //try //{ // DataRow[] rowItems = new DataRow[] { gridEx.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); //} } /// /// 说明:初始化分割条位置 /// 创建人:王一帆 /// 创建日期:2020-06-19 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitSpliterPosition() { string spliterPosition = IniHelper.Read(string.Format("PubModuleDetail5RightLowerRight_SplitterPositionMain_{0}", ModuleNumber)); if (!string.IsNullOrEmpty(spliterPosition)) this.splitMainControl.SplitterPosition = Convert.ToInt32(spliterPosition); } /// /// 说明:分割条位置改变事件 /// 创建人:王一帆 /// 创建日期:2020-06-19 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void splitContainer_SplitterPositionChanged(object sender, EventArgs e) { try { if (_isInitFinish) { IniHelper.Write(string.Format("PubModuleDetail5RightLowerRight_SplitterPositionMain_{0}", ModuleNumber), this.splitMainControl.SplitterPosition + ""); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } } }