/****************************** * 说明:多标签界面 * 创建人:龚宇超 * 创建日期:2018-04-04 * 修改人: * 修改日期: * 修改备注: * 版本:1.0.0.0 ******************************/ 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; using Lskj.Control; using Lskj.Model; using Lskj.Control.Model; using Lskj.Util; using Lskj.Data; using Lskj.Business.Impl; using DevExpress.XtraTab; using DevExpress.XtraEditors; using DevExpress.Utils; using DevExpress.XtraGrid.Views.Grid; namespace Lskj.PubPageDetail { /// /// 多标签界面 /// public partial class FrmMain : BaseForm { public DynamicPageDetailModel Model; /// /// 顶部表格控件 /// public ModuleGridEx ModuleGridObj; /// /// 底部多标签控件 /// public XtraTabControl TabObj; /// /// 底部多标签控件 /// public TabControlEx TabIntoObj; public FrmMain() { InitializeComponent(); } /// /// 说明: /// 创建人:龚宇超 /// 创建日期:2018-04-04 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 一个包含事件数据的 。 protected override void OnLoad(EventArgs e) { WaitForm.ShowForm(); try { this.Model.Privilege = this.Model.Privilege.Equals("3") ? "1" : Model.ModuleId > 0 ? BaseImpl.GetUserPurviewsByMenuId(Model.ModuleId + "") + "" : BaseImpl.GetUserPurviewsByMenuCode(Model.ModuleCode) + ""; this.tabContainer.ControlSql = Model.ControlSql; this.tabContainer.Model = this.Model; this.tabContainer.InitTabPages(GetDetails(Model.ModuleCode), this.Model.PrimaryValue); this.InitPageDetails(); this.SetTabPageStyle(); this.BindPageData(); } catch (Exception ex) { LogHelper.Instance.WriteError(ex, ResourceKeys.BaseModule); //MessageUtil.Show(ex.Message + "\r\n" + ex.StackTrace); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } finally { Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this); // 加载完统一显示控件 this.tabContainer.Visible = true; } WaitForm.HideForm(); } #region 设置动态TabPage的样式 /// /// 说明:设置动态的TabPage的样式隐藏页签标题 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SetTabPageStyle() { if (tabContainer2.TabControlObj.TabPages.Count == 0) { this.scc_container.PanelVisibility = SplitPanelVisibility.Panel1; } tabContainer.TabControlObj.ShowTabHeader = tabContainer.TabControlObj.TabPages.Count == 1 ? DefaultBoolean.False : DefaultBoolean.Default; tabContainer2.TabControlObj.ShowTabHeader = tabContainer2.TabControlObj.TabPages.Count == 1 ? DefaultBoolean.False : DefaultBoolean.Default; } #endregion #region 设置动态TabPage的样式 /// /// 说明:绑定完后刷新当前表格 /// 创建人:王一帆 /// 创建日期:2020-07-02 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void BindPageData() { this.TabIntoObj = this.tabContainer2; this.TabObj = this.TabIntoObj.TabControlObj; foreach (XtraTabPage tabPage in this.tabContainer.TabControlObj.TabPages) { if (tabPage.Tag is GridControlEx) { GridControlEx gridControl = tabPage.Tag as GridControlEx; gridControl.GridView.RowCellClick += new RowCellClickEventHandler(GridView_RowCellClick); //gridControl.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged); //gridControl.SetGridViewDataSource(MainImpl.GetDataTableResult(gridControl.LastSearchSql)); } } } #endregion /// /// 说明:初始化页面明细标签 /// 创建人:龚宇超 /// 创建日期:2019-12-23 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitPageDetails() { foreach (XtraTabPage tabPage in this.tabContainer.TabControlObj.TabPages) { GridDetailModel detailModel = this.tabContainer.GetGridDetailModel(tabPage); if (!string.IsNullOrEmpty(detailModel.UnionModule)) { if (tabPage.Tag is GridControlEx) { GridControlEx gridControl = tabPage.Tag as GridControlEx; this.tabContainer2.ParentGridEx = gridControl; } this.tabContainer2.Model = (tabPage.Tag as GridControlEx).Model; this.tabContainer2.InitTabPages(GetDetails(detailModel.UnionModule)); } } } /// /// 说明:加载明细数据 /// 创建人:龚宇超 /// 创建日期:2017-11-22 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. protected void OnGridViewFocusedRowObjectChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs e) { try { WaitForm.ShowForm(); GridView grid = sender as GridView; DataRow rowItem = grid.GetFocusedDataRow(); this.SetDetailGridDataSource(null, rowItem); } catch (Exception ex) { LogHelper.Instance.WriteError(ex); //MessageUtil.Show("加载明细数据失败!" + ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } finally { WaitForm.HideForm(); } } /// /// 说明:加载明细数据 /// 创建人:龚宇超 /// 创建日期: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(); GridView grid = sender as GridView; DataRow rowItem = grid.GetFocusedDataRow(); this.SetDetailGridDataSource(null, rowItem); } catch (Exception ex) { LogHelper.Instance.WriteError(ex); //MessageUtil.Show("加载明细数据失败!" + ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } finally { WaitForm.HideForm(); } } /// /// 说明:获取底部多标签数据 /// 创建人:龚宇超 /// 创建日期:2017-12-19 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// public void SetDetailGridDataSource(XtraTabPage tabPage = null, DataRow rowItem = null) { if (tabPage != null) { this.SetTabPageDataSource(tabPage, rowItem); } else { foreach (XtraTabPage page in this.TabObj.TabPages) { if (rowItem != null && page != null) { this.SetTabPageDataSource(page, rowItem); } else { SetTabPageDataSource(page, rowItem, true); } } } } /// /// 说明:设置表格数据 /// 创建人:龚宇超 /// 创建日期:2018-01-29 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tab page. /// The grid control. protected void SetTabPageDataSource(XtraTabPage tabPage, DataRow rowItem = null, bool isNull = false) { if (isNull) { this.TabIntoObj.SetGridDataSource(tabPage, new DataTable()); return; } GridDetailModel model = this.TabIntoObj.GetGridDetailModel(tabPage); if (rowItem != null && model != null) { string searchSql = this.GetSearchSql(model, rowItem); if (tabPage.Tag is GridControlEx) { (tabPage.Tag as GridControlEx).LastSearchSql = searchSql; } this.TabIntoObj.SetGridDataSource(tabPage, MainImpl.GetDataTableResult(searchSql)); } } /// /// 说明:获取查询条件 /// 创建人:龚宇超 /// 创建日期: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; } /// /// 说明: /// 创建人:龚宇超 /// 创建日期:2017-11-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本: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, true)); } return details; } } }