using DevExpress.Utils;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraTab;
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.PubDetailBom
{
public partial class DetailBom : UserControl
{
public DetailBom()
{
InitializeComponent();
}
#region 公有字段
///
/// 入口实体参数
///
public DynamicModuleDetailModel Model;
///
/// 系统模块实体对象
///
/// The system model.
public ModuleModel SysModel { get; private set; }
#endregion
#region 私有字段
///
/// 查询条件
///
/// The search object.
public MyControl SearchObj { get { return this.gcMain.SearchObj; } }
///
/// 明细数据
///
public List Details;
///
/// 左下方明细 -1
///
public List GridDetailleft;
///
/// 右上方明细 -2
///
public List GridDetailRightTop;
///
/// 右下方明细 -3
///
public List GridDetailRightBelow;
///
/// 右中间明细 -4
///
public List GridDetailRightMiddle;
///
/// 右侧页签明细 序号>=0
///
public List GridDetailRight;
///
/// 初始化完成
///
private bool _isInitFinish=false;
///
/// 是否已经执行行改变事件并刷新明细数据
///
public bool isFocusedRowChanged = true;
#endregion
///
/// 说明:窗口加载
/// 创建人:龚宇超
/// 创建日期:2019-06-28
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
/// The sender.
/// The instance containing the event data.
public void OnLoad(DynamicModuleDetailModel Model)
{
WaitForm.ShowForm();
try
{
this.Model = Model;
this.InitializeConotrl();
this.InitSpliterPosition();
}
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
{
this._isInitFinish = true;
}
WaitForm.HideForm();
}
#region 初始化分割条位置
///
/// 说明:初始化分割条位置
/// 创建人:王一帆
/// 创建日期:2020-06-19
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
private void InitSpliterPosition()
{
string spliterPosition = IniHelper.Read(string.Format("PubDetailBom_SplitterPositionMain_{0}", this.Model.ModuleCode));
if (!string.IsNullOrEmpty(spliterPosition)) this.splitContainerControl1.SplitterPosition = Convert.ToInt32(spliterPosition);
string splitterTopPosition = IniHelper.Read(string.Format("PubDetailBom_spliterPositionTop_{0}", this.Model.ModuleCode));
if (!string.IsNullOrEmpty(splitterTopPosition)) this.splitLeftControl.SplitterPosition = Convert.ToInt32(splitterTopPosition);
string splitterBottonPosition = IniHelper.Read(string.Format("PubDetailBom_spliterPositionBotton_{0}", this.Model.ModuleCode));
if (!string.IsNullOrEmpty(splitterBottonPosition)) this.splitBottomControl.SplitterPosition = Convert.ToInt32(splitterBottonPosition);
}
#endregion
#region 分割条位置改变
///
/// 说明:分割条位置改变事件
/// 创建人:王一帆
/// 创建日期:2020-06-19
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
private void splitContainer_SplitterPositionChanged(object sender, EventArgs e)
{
try
{
if (_isInitFinish)
{
IniHelper.Write(string.Format("PubDetailBom_SplitterPositionMain_{0}", this.Model.ModuleCode), this.splitContainerControl1.SplitterPosition + "");
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
private void splitContainerTop_SplitterPositionChanged(object sender, EventArgs e)
{
try
{
if (this._isInitFinish)
{
IniHelper.Write(string.Format("PubDetailBom_spliterPositionTop_{0}", this.Model.ModuleCode), this.splitLeftControl.SplitterPosition + "");
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
private void splitContainerBotton_SplitterPositionChanged(object sender, EventArgs e)
{
try
{
if (this._isInitFinish)
{
IniHelper.Write(string.Format("PubDetailBom_spliterPositionBotton_{0}", this.Model.ModuleCode), this.splitBottomControl.SplitterPosition + "");
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
#endregion
///
/// 说明:初始化主控件
/// 创建人:王一帆
/// 创建日期:2024-09-18
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
public void InitializeConotrl()
{
try
{
DataRow modelRow = MainImpl.GetSystemdllTab(this.Model.ModuleCode);
if (modelRow == null)
{
MessageUtil.Show("模块编号[" + this.Model.ModuleCode + "],配置错误!\r\n该模块信息未找到!");
return;
}
this.SysModel = new ModuleModel(modelRow);
this.InitializeGridControl();
this.InitializeDetailGrid();
this.gcMain.GridControlObj.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged);
this.gcMain.GridControlObj.GridView.RowCellClick += new RowCellClickEventHandler(GridView_RowCellClick);
this.SearchObj.OnSearchAfterCallBack += SearchObj_ClearDetails;
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
///
/// 说明:初始化主表控件
/// 创建人:王一帆
/// 创建日期:2024-09-18
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
public void InitializeGridControl()
{
this.gcMain.InitializeControl(this.SysModel, this.Model);
}
///
/// 说明:初始化所有明细
/// 创建人:曹屹峰
/// 创建日期:2024-09-23
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
private void InitializeDetailGrid()
{
//左下方 编号为-1
this.GridDetailleft=this.Details.Where(o => o.Orderid == -1).ToList();
if (GridDetailleft.Count > 0)
{
GridDetailModel gridDetailModel = GridDetailleft[0];
gcDetailLeft.Tag = gridDetailModel;
gridDetailModel.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(gridDetailModel.UnionModule));
this.gcDetailLeft.SetReadOnlyColumns(gridDetailModel.GridColumns, gridDetailModel.GridCustomColumnKey);
this.gcDetailLeft.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(gridDetailModel.UnionModule));
this.gcDetailLeft.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(gridDetailModel.UnionModule), this.Model, OnGridLeftRightCallBack, null, null);//右键
}
//右上方 编号为-2
this.GridDetailRightTop = this.Details.Where(o => o.Orderid == -2).ToList();
if (GridDetailRightTop.Count > 0)
{
GridDetailModel gridDetailModel = GridDetailRightTop[0];
gridControlEx2.Tag = gridDetailModel;
gridDetailModel.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(gridDetailModel.UnionModule));
this.gridControlEx2.SetReadOnlyColumns(gridDetailModel.GridColumns, gridDetailModel.GridCustomColumnKey);
this.gridControlEx2.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(gridDetailModel.UnionModule));
this.gridControlEx2.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(gridDetailModel.UnionModule), this.Model, null, null, null);//右键
//this.label1.Text = gridDetailModel.SystemModel.MenuText;
this.label1.Text = gridDetailModel.DetailName;
this.gridControlEx2.GridView.OptionsView.ShowFooter = false; // 隐藏合计行
this.gridControlEx2.GridView.OptionsView.ShowIndicator = false; // 隐藏序号列
}
//右下方 编号为-3
this.GridDetailRightBelow = this.Details.Where(o => o.Orderid == -3).ToList();
if (GridDetailRightBelow.Count > 0)
{
GridDetailModel gridDetailModel = GridDetailRightBelow[0];
gridControlEx1.Tag = gridDetailModel;
gridDetailModel.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(gridDetailModel.UnionModule));
this.gridControlEx1.SetReadOnlyColumns(gridDetailModel.GridColumns, gridDetailModel.GridCustomColumnKey);
this.gridControlEx1.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(gridDetailModel.UnionModule));
this.gridControlEx1.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(gridDetailModel.UnionModule), this.Model, null, null, null);//右键
this.gridControlEx1.GridView.OptionsView.ShowFooter = false; // 隐藏合计行
this.gridControlEx1.GridView.OptionsView.ShowIndicator = false; // 隐藏序号列
}
//右上方第二个(Tab_Top) 编号为-4
this.GridDetailRightMiddle = this.Details.Where(o => o.Orderid == -4).ToList();
if (GridDetailRightMiddle.Count > 0)
{
List newList = new List { GridDetailRightMiddle[0] };
this.Tab_Top.Model = this.Model;
this.Tab_Top.DrgaParentPrimaryKey = this.SysModel.ParmaryKey;
this.Tab_Top.ParentControlEx = this.SearchObj;
this.Tab_Top.ParentGridEx = this.gcMain.GridControlObj;
this.Tab_Top.InitTabPages(newList);
this.Tab_Top.OnRightCallback += new EventHandler(OnGridViewRightCallBack_Top);
this.Tab_Top.TabControlObj.ShowTabHeader =DefaultBoolean.False ;
}
//右侧整体明细页签 编号>=0
this.GridDetailRight = this.Details.Where(o => o.Orderid >=0).ToList();
if (GridDetailRight.Count > 0)
{
this.Tab_Bottom.Model = this.Model;
this.Tab_Bottom.DrgaParentPrimaryKey = this.SysModel.ParmaryKey;
this.Tab_Bottom.ParentControlEx = this.SearchObj;
this.Tab_Bottom.ParentGridEx = this.gcMain.GridControlObj;
this.Tab_Bottom.InitTabPages(this.GridDetailRight);
this.Tab_Bottom.OnRightCallback += new EventHandler(OnGridViewRightCallBack_Bottom);
}
}
#region 刷新所有明细
///
/// 说明:刷新所有明细
/// 创建人:曹屹峰
/// 创建日期:2024-09-23
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
private void RefreshAllDetails()
{
try
{
WaitForm.ShowForm();
DataRow rowItem = this.gcMain.GridControlObj.GetViewFocusedDataRow();
//-1
if (GridDetailleft.Count>=0)
{
GridDetailModel model = GridDetailleft[0];
if (rowItem == null)
{
this.gcDetailLeft.SetGridViewDataSource(new DataTable());
}
else
{
string searchSql = this.GetSearchSql(model, rowItem);
this.gcDetailLeft.LastSearchSql = searchSql;
this.gcDetailLeft.SetGridViewDataSource(MainImpl.GetDataTableResult(gcDetailLeft.LastSearchSql));
}
}
//-2
if (GridDetailRightTop.Count > 0)
{
GridDetailModel model = GridDetailRightTop[0];
if (rowItem == null)
{
this.gridControlEx2.SetGridViewDataSource(new DataTable());
}
else
{
string searchSql = this.GetSearchSql(model, rowItem);
this.gridControlEx2.LastSearchSql = searchSql;
this.gridControlEx2.SetGridViewDataSource(MainImpl.GetDataTableResult(gridControlEx2.LastSearchSql));
}
}
//-3
if (rowItem != null && GridDetailRightBelow.Count > 0)
{
GridDetailModel model = GridDetailRightBelow[0];
if (rowItem == null)
{
this.gridControlEx1.SetGridViewDataSource(new DataTable());
}
else
{
string searchSql = this.GetSearchSql(model, rowItem);
this.gridControlEx1.LastSearchSql = searchSql;
this.gridControlEx1.SetGridViewDataSource(MainImpl.GetDataTableResult(gridControlEx1.LastSearchSql));
}
}
//-4
if (GridDetailRightMiddle.Count > 0)
{
this.SetDetailGridDataSource(this.Tab_Top);
}
//序号>=0
if (GridDetailRight.Count > 0)
{
this.SetDetailGridDataSource(this.Tab_Bottom);
}
}
catch (Exception ex)
{
}
finally
{
WaitForm.HideForm();
}
}
///
/// 说明:获取底部多标签数据
/// 创建人:龚宇超
/// 创建日期:2017-12-19
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
public void SetDetailGridDataSource(TabControlEx tabControlEx,XtraTabPage tabPage = null)
{
if (tabPage != null)
{
this.SetTabPageDataSource(tabPage, tabControlEx);
}
else
{
DataRow rowItem = this.gcMain.GridControlObj.GetViewFocusedDataRow();
if (this.SysModel.RefreshDetail == "0")
{
XtraTabPage RefreshPage = tabControlEx.TabControlObj.SelectedTabPage;
if (rowItem != null && RefreshPage != null)
{
this.SetTabPageDataSource(RefreshPage, tabControlEx);
}
else
{
SetTabPageDataSource(RefreshPage, tabControlEx, true);
}
}
else
{
foreach (XtraTabPage page in tabControlEx.TabControlObj.TabPages)
{
if (rowItem != null && page != null)
{
this.SetTabPageDataSource(page, tabControlEx);
}
else
{
SetTabPageDataSource(page, tabControlEx, true);
}
}
}
}
}
///
/// 说明:设置表格数据
/// 创建人:龚宇超
/// 创建日期:2018-01-29
/// 修改人:
/// 修改日期:
/// 修改备注:
/// 版本:1.0
///
/// The tab page.
/// 1为Tab_Top(序号=-4),2为Tab_Bottom(序号>=0)
protected void SetTabPageDataSource(XtraTabPage tabPage, TabControlEx tabControlEx,bool isNull = false)
{
if (isNull)
{
tabControlEx.SetGridDataSource(tabPage, new DataTable());
return;
}
GridDetailModel model = tabControlEx.GetGridDetailModel(tabPage);
DataRow rowItem = this.gcMain.GridControlObj.GetViewFocusedDataRow();
Object moduleObject = tabPage.Controls.Cast