using DevExpress.Utils; using DevExpress.XtraGrid.Views.Grid; using Lskj.Business; using Lskj.Business.Impl; using Lskj.Control; using Lskj.Control.Model; using Lskj.Data; using Lskj.Model; using Lskj.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lskj.PubModuleDynamic { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); this.splitMain.SplitterPositionChanged += OnSplitterPositionChanged; this.Load += OnFrmMainLoad; } #region 变量 /// /// 系统模块 /// public DynamicModuleDetailModel SysModel; /// /// 主程序的基础模型 /// public ModuleModel MoudleMainObj; /// /// 主键 /// public string ParmaryKey; /// /// 所有菜单 /// public DataTable AllMenus; /// /// 查询条件 /// private DataTable _queryTable = new DataTable(); /// /// 自定义查询条件 /// public MyControl SearchObj { get; private set; } #endregion #region 事件 /// /// 初始化界面 /// /// /// private void OnFrmMainLoad(object sender, EventArgs e) { this.AllMenus = MainImpl.GetMenusByMenuType(out string menuSql); this.InitializeLeftTable(); this.InitSpliterPosition(); } /// /// 说明:初始化分割条位置 /// 创建人:龚宇超 /// 创建日期:2017-12-15 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitSpliterPosition() { string spliterPosition = IniHelper.Read(string.Format("PubModuleDynamic_splitMain{0}", this.SysModel.ModuleCode)); if (!string.IsNullOrEmpty(spliterPosition)) this.splitMain.SplitterPosition = Convert.ToInt32(spliterPosition); } /// /// 分割条改变时 /// /// /// private void OnSplitterPositionChanged(object sender, EventArgs e) { IniHelper.Write(string.Format("PubModuleDynamic_splitMain{0}", this.SysModel.ModuleCode), this.splitMain.SplitterPosition + ""); } /// /// 左侧表双击事件 /// /// /// private void OnGridViewDoubleClick(object sender, EventArgs e) { try { WaitForm.ShowForm(); modulePanel.Controls.Clear(); DataRow rowItem = this.gridLeft.GetViewFocusedDataRow(); if (rowItem != null) { string modid = rowItem["modid"] + ""; // 验证参数 if (string.IsNullOrWhiteSpace(modid)) { MessageUtil.Show(ResourceKeys.NotFoundMenu); return; } DataRow modelRow = null; modelRow = MainImpl.GetSystemdllTab(modid);//获取单个模块信息 if (modelRow == null) { MessageUtil.Show("模块编号[" + modid + "],配置错误!\r\n该模块信息未找到!"); return; } string[] args = new string[] { "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, "1", modid, "" }; DynamicModuleDetailModel moduleModel = new DynamicModuleDetailModel(args);// 基础档案上下结构动态链接库参数 ModuleEx moduleEx = new ModuleEx(); moduleEx.ModuleGridDetailObj.ModuleGridObj.ParentControlObj = this.SearchObj; moduleEx.LeftCond = moduleModel.LeftCond;//用户控件的左侧条件=动态链接库对象左侧树结构 moduleEx.Details = GetDetails(modid);//拿到底部表格数据 moduleEx.InitControls(moduleModel);//创建界面 moduleEx.Dock = DockStyle.Fill; modulePanel.Controls.Add(moduleEx); } } catch (Exception ex) { MessageUtil.Show(ex.Message); } finally { WaitForm.HideForm(); } } #endregion #region 方法 /// /// 初始化左侧表 /// private void InitializeLeftTable() { //获得模块属性 this.MoudleMainObj = new ModuleModel(MainImpl.GetSystemdllTab(this.SysModel.ModuleCode));//获取主模块构建类 //获取主键 this.ParmaryKey = BaseImpl.GetBasePrimaryKey(this.SysModel.ModuleCode); //获取查询控件 this.SearchObj = new MyControl(this.MoudleMainObj.MenuSql, gridLeft, null, null, null); //获取设置左侧表列数据 DataTable leftGridColumns = BaseModuleImpl.GetBaseGridColumns(this.SysModel.ModuleCode); this.gridLeft.SetReadOnlyColumns(leftGridColumns); //设置左侧数据源 this.gridLeft.gridControl.DataSource = BaseImpl.GetDataTableResult(this.MoudleMainObj.MenuSql); //左侧表格行改变,刷新右侧表格列 this.gridLeft.GridView.DoubleClick += OnGridViewDoubleClick; //加载条件 this._queryTable = BaseModuleImpl.GetCustomQueryFields(this.MoudleMainObj.CondKey);//加载自定义配置字段 bool fixedQuery = _queryTable == null || _queryTable.Rows.Count == 0; if (fixedQuery) { // 加载固定查询条件 DataTable table = new DataTable(); table = BaseModuleImpl.GetFixedQueryFields(this.SysModel.ModuleCode);//加载固定查询条件 this.cbField.DisplayMember = "fieldText"; this.cbField.ValueMember = "fieldName"; this.cbField.DataSource = table; this.SearchObj.InitDefaultSearchControl(table, this.pl_top_search); } else { // 加载配置查询条件 this.pl_top_search.Controls.Clear(); this.SearchObj.OtherParams = SysModel.OtherParams(); this.pl_top_search.Height = this.SearchObj.InitSearchControl(_queryTable, this.pl_top_search, null, SysModel); } } /// /// 说明:拿到底部表格数据 /// 创建人:龚宇超 /// 创建日期:2017-11-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// List<GridDetailModel>. private List GetDetails(string moduleCode) { List details = new List();//表格明细对象的集合 DataTable table = new DataTable();// 根据传入的模块编号获得基础档案底部标签的数据 bool ProcessExists = (Lskj.Data.Caches.CacheSYSConfig.Instance().JudgeProcessExists() && SystemInfo.Instance.isExecload); if (ProcessExists) { table = Lskj.Data.Caches.CacheSYSConfig.Instance().GetBaseDetailPages(); } else { table = BaseModuleImpl.GetBaseDetailPages(moduleCode);// 根据传入的模块编号获得基础档案底部标签的数据 } foreach (DataRow item in table.Rows) { DataTable gridColumns = new DataTable(); if (ProcessExists) { gridColumns = Lskj.Data.Caches.CacheSYSConfig.Instance().GetReportDetailColumns(item["id"] + "");//获取报表明细列 } else { gridColumns = ReportImpl.GetReportDetailColumns(moduleCode, item["id"] + "");//获取报表明细列 } details.Add(new GridDetailModel(item, gridColumns, GridCustomColumnStruct.BaseDetailGridView)); } return details; } #endregion } }