Files
lserp_cs_6.0/插件库/Lskj.PubPageDetail/FrmMain.cs
T
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

343 lines
13 KiB
C#

/******************************
* 说明:多标签界面
* 创建人:龚宇超
* 创建日期: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
{
/// <summary>
/// 多标签界面
/// </summary>
public partial class FrmMain : BaseForm
{
public DynamicPageDetailModel Model;
/// <summary>
/// 顶部表格控件
/// </summary>
public ModuleGridEx ModuleGridObj;
/// <summary>
/// 底部多标签控件
/// </summary>
public XtraTabControl TabObj;
/// <summary>
/// 底部多标签控件
/// </summary>
public TabControlEx TabIntoObj;
public FrmMain()
{
InitializeComponent();
}
/// <summary>
/// <para>说明:</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-04-04 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="e">一个包含事件数据的 <see cref="T:System.EventArgs" />。</param>
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的样式
/// <summary>
/// <para>说明:设置动态的TabPage的样式隐藏页签标题</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-02-27</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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的样式
/// <summary>
/// <para>说明:绑定完后刷新当前表格</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2020-07-02</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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
/// <summary>
/// <para>说明:初始化页面明细标签</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2019-12-23 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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));
}
}
}
/// <summary>
/// <para>说明:加载明细数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-11-22 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="DevExpress.Data.SelectionChangedEventArgs"/> instance containing the event data.</param>
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();
}
}
/// <summary>
/// <para>说明:加载明细数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-09-28 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="RowCellClickEventArgs"/> instance containing the event data.</param>
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();
}
}
/// <summary>
/// <para>说明:获取底部多标签数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-19 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
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);
}
}
}
}
/// <summary>
/// <para>说明:设置表格数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-01-29 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="tabPage">The tab page.</param>
/// <param name="gridControl">The grid control.</param>
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));
}
}
/// <summary>
/// <para>说明:获取查询条件</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-11-22 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="model">The model.</param>
/// <param name="rowItem">The row item.</param>
/// <returns>System.String.</returns>
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;
}
/// <summary>
/// <para>说明:</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-11-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <returns>List&lt;GridDetailModel&gt;.</returns>
private List<GridDetailModel> GetDetails(string moduleCode)
{
List<GridDetailModel> details = new List<GridDetailModel>();
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;
}
}
}