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; namespace Lskj.Control { public partial class TabAddControl : UserControl { public SplitContainerControl splitContainerControl { get { return this.splitMainControl; } } /// /// 是否加载明细刷新 /// /// true if [_ un refresh]; otherwise, false. private bool _UnRefresh { get { return Model is DynamicModuleDetailModel || Model is DynamicModuleModel || Model is DynamicProductionModel; } } /// /// 表一 /// public GridControlEx gridEx=new GridControlEx(); /// /// 表二 /// public ModuleGridEx gridEx2=new ModuleGridEx(); /// /// 拖拽模式 /// 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; public TabAddControl() { InitializeComponent(); } /// /// 说明:绑定选项卡 /// 创建人:龚宇超 /// 创建日期:2018-01-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void InitTabPages(List gridDetail) { this._gridDetail = gridDetail; foreach (GridDetailModel model in this._gridDetail) { if (model.IsReadOnly) { GroupBox groupBox = new GroupBox(); groupBox.Dock = DockStyle.Fill; groupBox.Text = model.DetailName; gridEx = new GridControlEx(); gridEx.Dock = DockStyle.Fill; gridEx.Tag = model; gridEx.GridView.DoubleClick -= new EventHandler(OnDoubleGridClic); 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.IsDrag) { gridEx.GridView.DoubleClick += new EventHandler(OnDoubleGridClic); } groupBox.Controls.Add(gridEx); splitMainControl.Panel1.Controls.Add(groupBox); } else { GroupBox groupBox2 = new GroupBox(); groupBox2.Dock = DockStyle.Fill; groupBox2.Text = model.DetailName; 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 = "gridEx"; 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.Controls.Add(groupBox2); } } } /// /// 说明: /// 创建人:龚宇超 /// 创建日期: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); } } } }