/******************************
* 说明:多标签界面
* 创建人:龚宇超
* 创建日期: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;
}
}
}