860 lines
38 KiB
C#
860 lines
38 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Drawing;
|
||
using System.Data;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Windows.Forms;
|
||
using Lskj.Control.Model;
|
||
using Lskj.Model;
|
||
using Lskj.Business.Impl;
|
||
using Lskj.Data;
|
||
using DevExpress.XtraGrid.Columns;
|
||
using Lskj.Business;
|
||
using Lskj.Util;
|
||
using DevExpress.XtraGrid.Views.Grid;
|
||
using DevExpress.XtraEditors;
|
||
|
||
namespace Lskj.Control
|
||
{
|
||
public partial class TabMultipledetails : UserControl
|
||
{
|
||
public TabMultipledetails()
|
||
{
|
||
InitializeComponent();
|
||
}
|
||
#region 公共变量
|
||
/// <summary>
|
||
/// 是否加载明细刷新
|
||
/// </summary>
|
||
/// <value><c>true</c> if [_ un refresh]; otherwise, <c>false</c>.</value>
|
||
private bool _UnRefresh
|
||
{
|
||
get
|
||
{
|
||
return Model is DynamicModuleDetailModel || Model is DynamicModuleModel || Model is DynamicProductionModel;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 分割线
|
||
/// </summary>
|
||
public DevExpress.XtraEditors.SplitContainerControl SplitMain { get { return this.splitMainControl; } }
|
||
/// <summary>
|
||
/// 表一
|
||
/// </summary>
|
||
public ModuleGridEx gridEx1 = new ModuleGridEx();
|
||
/// <summary>
|
||
/// 表二
|
||
/// </summary>
|
||
public ModuleGridEx gridEx2 = new ModuleGridEx();
|
||
/// <summary>
|
||
/// tab标签
|
||
/// </summary>
|
||
private GridDetailModel[] _gridDetail;
|
||
/// <summary>
|
||
/// The system model
|
||
/// </summary>
|
||
public DynamicModel Model;
|
||
/// <summary>
|
||
/// 父表格
|
||
/// </summary>
|
||
public GridControlEx ParentGridEx;
|
||
/// <summary>
|
||
/// 父容器
|
||
/// </summary>
|
||
public MyControl ParentControlEx;
|
||
/// <summary>
|
||
/// 拖拽模式
|
||
/// </summary>
|
||
public bool IsDragDetail;
|
||
/// <summary>
|
||
/// 拖拽执行sql
|
||
/// </summary>
|
||
public string existDragSql;
|
||
|
||
/// <summary>
|
||
/// 拖拽目标主键字段
|
||
/// </summary>
|
||
public string DrgaParentPrimaryKey;
|
||
/// <summary>
|
||
/// 左侧表刷新右侧表
|
||
/// </summary>
|
||
public bool UnioDetail = false;
|
||
/// <summary>
|
||
/// Occurs when [on Save Grid call back].
|
||
/// </summary>
|
||
public event EventHandler OnSaveGridCallBack;
|
||
/// <summary>
|
||
/// 下面明细表右键执行后回调
|
||
/// </summary>
|
||
public event EventHandler DetailRightGridCallBack;
|
||
|
||
/// <summary>
|
||
/// TabMultipledetails右键执行后回调(针对单据,单据主表明细不是ModuleGridEx,SearchLastGrid方法无效)
|
||
/// </summary>
|
||
public event EventHandler BillDetailRightGridCallBack;
|
||
|
||
#endregion
|
||
#region
|
||
/// <summary>
|
||
/// 初始化完成
|
||
/// </summary>
|
||
private bool _isInitFinish;
|
||
#endregion
|
||
/// <summary>
|
||
/// <para>说明:绑定选项卡</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2018-01-09</para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
public void InitTabPages(GridDetailModel[] gridDetail)
|
||
{
|
||
try
|
||
{
|
||
this._isInitFinish = false;
|
||
this._gridDetail = gridDetail;
|
||
int i = 0;
|
||
int MainTable = 0;//主表序号,1和2对应主表为第一个还是第二个
|
||
bool ProcessExists = (Lskj.Data.Caches.CacheSYSConfig.Instance().JudgeProcessExists() && SystemInfo.Instance.isExecload);
|
||
foreach (GridDetailModel model in this._gridDetail)
|
||
{
|
||
if (!model.IsAddPanel && !model.IsDetailView && !model.IsWebView && !model.IsWebView2 && !model.IsWebView3)
|
||
{
|
||
if (model.IsChart)
|
||
{
|
||
ChartControlEx chartEx = new ChartControlEx();
|
||
chartEx.Dock = DockStyle.Fill;
|
||
chartEx.transverseHistogram = model.transverseHistogram;
|
||
//chartEx.SetCharts(BaseModuleImpl.GetChartParams(model.FormKey));
|
||
//chartEx.SetChartRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack);
|
||
if (ProcessExists)
|
||
{
|
||
chartEx.SetCharts(Lskj.Data.Caches.CacheSYSConfig.Instance().GetCustomQueryFields());
|
||
chartEx.SetChartRightMenus(Lskj.Data.Caches.CacheSYSConfig.Instance().GetBaseGridRightMenus(), this.Model, null);
|
||
}
|
||
else
|
||
{
|
||
chartEx.SetCharts(BaseModuleImpl.GetChartParams(model.FormKey));
|
||
chartEx.SetChartRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, null);
|
||
}
|
||
chartEx.Tag = model;
|
||
if (i == 0)
|
||
{
|
||
splitMainControl.Panel1.Controls.Add(chartEx);
|
||
splitMainControl.Panel1.Tag = chartEx;
|
||
}
|
||
else
|
||
{
|
||
splitMainControl.Panel2.Controls.Add(chartEx);
|
||
splitMainControl.Panel2.Tag = chartEx;
|
||
}
|
||
}
|
||
else if (model.IsReadOnly)
|
||
{
|
||
GridControlEx gridEx = model.AutoMultiHeader == 1 ? new BandedGridControlEx() : new GridControlEx();
|
||
gridEx.Dock = DockStyle.Fill;
|
||
gridEx.Tag = model;
|
||
gridEx.Model = this.Model;
|
||
gridEx.SetReadOnlyColumns(model.GridColumns, model.GridCustomColumnKey);
|
||
//gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack);
|
||
//gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey));
|
||
if (ProcessExists)
|
||
{
|
||
gridEx.SetGridRightMenus(Lskj.Data.Caches.CacheSYSConfig.Instance().GetBaseGridRightMenus(), this.Model, null);
|
||
gridEx.SetGridRowColors(Lskj.Data.Caches.CacheSYSConfig.Instance().GetCustomColumnByDatabase());
|
||
}
|
||
else
|
||
{
|
||
gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, null);
|
||
gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey));
|
||
}
|
||
if (model.IsCheck == 1)//加载复选框
|
||
{
|
||
GridDragGrid.GridAddCheckBox(gridEx.GridView);
|
||
}
|
||
if (IsDragDetail && this.ParentGridEx != null && model.IsDrag)
|
||
{
|
||
// 拖拽模式,绑定拖拽对象
|
||
GridDragGrid dragGrid = new GridDragGrid(gridEx.GridView, this.ParentGridEx.GridView);
|
||
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted);
|
||
}
|
||
|
||
//左侧表设置后,添加事件。行改变时刷新右侧表
|
||
if (model.IsUnioDetail)
|
||
{
|
||
gridEx.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged);
|
||
gridEx.GridView.RowCellClick += new RowCellClickEventHandler(OnRowCellClick);
|
||
UnioDetail = true;
|
||
}
|
||
|
||
if (i == 0)
|
||
{
|
||
gridEx1.GridControlObj = gridEx;
|
||
// 加载配置查询条件
|
||
if (Model != null && Model.IsDetailSearch)
|
||
{
|
||
gridEx1.SearchObj.InitSearchControl(BaseModuleImpl.GetCustomQueryFields(model.FormKey), gridEx1.SearchPanel);
|
||
}
|
||
splitMainControl.Panel1.Controls.Add(gridEx);
|
||
splitMainControl.Panel1.Tag = gridEx;
|
||
if (!string.IsNullOrWhiteSpace(model.DragExecuteSql))
|
||
{
|
||
existDragSql = model.DragExecuteSql;
|
||
MainTable = 1;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
|
||
gridEx2.GridControlObj = gridEx;// 加载配置查询条件
|
||
if (Model != null && Model.IsDetailSearch)
|
||
{
|
||
gridEx2.SearchObj.InitSearchControl(BaseModuleImpl.GetCustomQueryFields(model.FormKey), gridEx2.SearchPanel);
|
||
}
|
||
splitMainControl.Panel2.Controls.Add(gridEx);
|
||
splitMainControl.Panel2.Tag = gridEx;
|
||
if (!string.IsNullOrWhiteSpace(model.DragExecuteSql))
|
||
{
|
||
existDragSql = model.DragExecuteSql;
|
||
MainTable = 2;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
DynamicModel dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, "1", model.UnionModule, "0" });
|
||
if (ProcessExists)
|
||
{
|
||
model.SystemModel = new ModuleModel(Lskj.Data.Caches.CacheSYSConfig.Instance().GetSystemdllTab());
|
||
if (Model != null)
|
||
model.SystemModel.ParmaryKey = Lskj.Data.Caches.CacheSYSConfig.Instance().GetBasePrimaryKey();
|
||
}
|
||
else
|
||
{
|
||
model.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(model.UnionModule));
|
||
if (Model != null)
|
||
model.SystemModel.ParmaryKey = BaseImpl.GetBasePrimaryKey(Model.ModuleCode);
|
||
}
|
||
|
||
ModuleGridEx gridEx = new ModuleGridEx();
|
||
gridEx.RightGridCallBack += OnGridAfterRightCallBack;
|
||
|
||
if (model.BottomRefreshMain)
|
||
{
|
||
gridEx.OnSaveGridCallBack += OnRefreshMainTable;
|
||
}
|
||
|
||
gridEx.Name = "gridEx";
|
||
gridEx.IsDetail = true;
|
||
gridEx.Dock = DockStyle.Fill;
|
||
gridEx.OperShortMode = Model.IsDetailSearch; // 不显示简短模式
|
||
gridEx.VisibleSearchPanel = Model.IsDetailSearch;
|
||
gridEx.VisibleOperPanel = !model.IsReadOnly;
|
||
|
||
if (model.HideBottomPanel || model.Library.Equals("Lskj.Report.dll", StringComparison.OrdinalIgnoreCase))
|
||
{
|
||
gridEx.VisibleOperPanel = false;
|
||
dyncModel = new DynamicReportModel(new[]
|
||
{ model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName,
|
||
this.Model.Privilege, model.UnionModule, "0" });
|
||
}
|
||
|
||
gridEx.InitializeControl(model.SystemModel, dyncModel);
|
||
gridEx.GridControlObj.Tag = model;
|
||
gridEx.ParentControlEx = this.ParentControlEx;
|
||
gridEx.ParentGridEx = this.ParentGridEx;
|
||
gridEx.ParentKeyField = string.IsNullOrEmpty(model.UnionParentField) ? model.SystemModel.ParmaryKey : model.UnionParentField;
|
||
gridEx.DetailKeyField = model.UnionValue;
|
||
gridEx.GridControlObj.ParentControl = gridEx.SearchObj;
|
||
|
||
gridEx.OnSaveGridCallBack += OnSaveGridCallBack;
|
||
gridEx.DetailRightGridCallBack += DetailRightGridCallBack;
|
||
|
||
//左侧表设置后,添加事件。行改变时刷新右侧表
|
||
if (model.IsUnioDetail)
|
||
{
|
||
gridEx.GridControlObj.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged);
|
||
gridEx.GridControlObj.GridView.RowCellClick += new RowCellClickEventHandler(OnRowCellClick);
|
||
UnioDetail = true;
|
||
}
|
||
if (model.IsCheck == 1)
|
||
{
|
||
GridDragGrid.GridAddCheckBox(gridEx.GridControlObj.GridView);
|
||
}
|
||
if (model.QueryAgain)
|
||
{
|
||
gridEx.SearchObj.OnSearchAfterCallBack += SearchObj_OnSearchAfterCallBack;
|
||
}
|
||
|
||
if (IsDragDetail && this.ParentGridEx != null && model.IsDrag)
|
||
{
|
||
// 拖拽模式,绑定拖拽对象
|
||
GridDragGrid dragGrid = new GridDragGrid(gridEx.GridControlObj.GridView, this.ParentGridEx.GridView);
|
||
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted);
|
||
}
|
||
if (model.AutoRefresh && !_UnRefresh)
|
||
gridEx.SearchObj.SearchGrid();
|
||
if (i == 0)
|
||
{
|
||
gridEx1 = gridEx;
|
||
splitMainControl.Panel1.Controls.Add(gridEx);
|
||
splitMainControl.Panel1.Tag = gridEx.GridControlObj;
|
||
if (!string.IsNullOrWhiteSpace(model.DragExecuteSql))
|
||
{
|
||
existDragSql = model.DragExecuteSql;
|
||
MainTable = 1;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (UnioDetail)
|
||
{
|
||
gridEx.ParentControlEx = this.gridEx1.SearchObj;
|
||
gridEx.ParentGridEx = this.gridEx1.GridControlObj;
|
||
}
|
||
gridEx2 = gridEx;
|
||
splitMainControl.Panel2.Controls.Add(gridEx);
|
||
splitMainControl.Panel2.Tag = gridEx.GridControlObj;
|
||
if (!string.IsNullOrWhiteSpace(model.DragExecuteSql))
|
||
{
|
||
existDragSql = model.DragExecuteSql;
|
||
MainTable = 2;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
i++;
|
||
}
|
||
|
||
//判断是否有推拽sql
|
||
if (MainTable != 0)
|
||
{
|
||
if ((splitMainControl.Panel1.Tag is GridControlEx) && (splitMainControl.Panel2.Tag is GridControlEx))
|
||
{
|
||
GridControlEx grdExMain = (splitMainControl.Panel1.Tag as GridControlEx);
|
||
GridControlEx grdExAdditional = (splitMainControl.Panel2.Tag as GridControlEx);
|
||
if (MainTable == 1)
|
||
{
|
||
// 拖拽模式,绑定拖拽对象
|
||
GridDragGrid dragGrid = new GridDragGrid(grdExMain.GridView, grdExAdditional.GridView);
|
||
dragGrid.OnDragComplete += DragGrid_OnDragComplete;
|
||
}
|
||
else if (MainTable == 2)
|
||
{
|
||
// 拖拽模式,绑定拖拽对象
|
||
GridDragGrid dragGrid = new GridDragGrid(grdExAdditional.GridView, grdExMain.GridView);
|
||
dragGrid.OnDragComplete += DragGrid_OnDragComplete;
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
throw;
|
||
}
|
||
finally
|
||
{
|
||
_isInitFinish = true;
|
||
InitializeSplitterPosition();
|
||
}
|
||
}
|
||
//两个表间推拽时执行存储过程
|
||
private void DragGrid_OnDragComplete(object sender, GridDragGridArgs e)
|
||
{
|
||
try
|
||
{
|
||
foreach (DataRow item in e.GridViewSelectRows)
|
||
{
|
||
string sql = ReplaceHelper.ReplaceRowParam(item, existDragSql);
|
||
BaseImpl.ExecSqlValue(sql);
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
finally
|
||
{
|
||
if (this.ParentControlEx != null&& this.ParentControlEx.MainGridEx != null) this.ParentControlEx.SearchGrid();
|
||
//gridEx1.SearchObj.SearchLastGrid();
|
||
//gridEx2.SearchObj.SearchLastGrid();
|
||
DataRow rowItem = this.ParentGridEx.GetViewFocusedDataRow();
|
||
int i = 0;
|
||
foreach (GridDetailModel model in this._gridDetail)
|
||
{
|
||
if (model.QueryAgain)
|
||
{
|
||
if (i == 0)
|
||
{
|
||
string sqlValue = model.IsReadOnly || model.IsChart ? model.DetailSql : model.SystemModel.MenuSql;
|
||
sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue);
|
||
gridEx1.SearchObj.SearchGrid(sqlValue, true, false);
|
||
}
|
||
else if (1 == 1)
|
||
{
|
||
string sqlValue = model.IsReadOnly || model.IsChart ? model.DetailSql : model.SystemModel.MenuSql;
|
||
sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue);
|
||
gridEx2.SearchObj.SearchGrid(sqlValue, true, false);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (i == 0)
|
||
{
|
||
gridEx1.SearchObj.SearchLastGrid();
|
||
}
|
||
else if (1 == 1)
|
||
{
|
||
gridEx2.SearchObj.SearchLastGrid();
|
||
}
|
||
}
|
||
i++;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
}
|
||
#region 行点击改变事件
|
||
/// <summary>
|
||
/// <para>说明:数据行发生改变加载明细</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期: </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The sender.</param>
|
||
/// <param name="e">The <see cref="DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs"/> instance containing the event data.</param>
|
||
protected void OnGridViewFocusedRowObjectChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
WaitForm.ShowForm();
|
||
GridControlEx mainGridObj = splitMainControl.Panel1.Tag as GridControlEx;
|
||
DataRow rowItem = mainGridObj.GetViewFocusedDataRow();
|
||
if (rowItem != null)
|
||
{
|
||
if (splitMainControl.Panel2.Tag is GridControlEx)
|
||
{
|
||
GridControlEx DetailGridObj = splitMainControl.Panel2.Tag as GridControlEx;
|
||
GridDetailModel gridMainModel = mainGridObj.Tag as GridDetailModel;
|
||
GridDetailModel gridDetailModel = DetailGridObj.Tag as GridDetailModel;
|
||
string primaryKey = BaseImpl.GetBasePrimaryKey(gridMainModel.UnionModule);
|
||
string searchSql = this.GetSearchSql(gridDetailModel, rowItem, primaryKey);
|
||
DetailGridObj.LastSearchSql = searchSql;
|
||
DetailGridObj.SetGridViewDataSource(MainImpl.GetDataTableResult(searchSql));
|
||
}
|
||
else if (splitMainControl.Panel2.Tag is ChartControlEx)
|
||
{
|
||
ChartControlEx DetailGridObj = splitMainControl.Panel2.Tag as ChartControlEx;
|
||
GridDetailModel gridMainModel = mainGridObj.Tag as GridDetailModel;
|
||
GridDetailModel gridDetailModel = DetailGridObj.Tag as GridDetailModel;
|
||
string primaryKey = BaseImpl.GetBasePrimaryKey(gridMainModel.UnionModule);
|
||
string searchSql = this.GetSearchSql(gridDetailModel, rowItem, primaryKey);
|
||
DetailGridObj.CreateChart(MainImpl.GetDataTableResult(searchSql));
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Instance.WriteError(ex);
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show("加载明细数据失败!" + Message);
|
||
}
|
||
finally
|
||
{
|
||
WaitForm.HideForm();
|
||
}
|
||
}
|
||
|
||
/// <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 ParmaryKey = "")
|
||
{
|
||
string fieldName = !string.IsNullOrEmpty(model.UnionParentField) && rowItem.Table.Columns.Contains(model.UnionParentField) ? model.UnionParentField : 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] + "");
|
||
}
|
||
if (!string.IsNullOrEmpty(model.UnionCond))
|
||
{
|
||
string UnionCond = ReplaceHelper.ReplaceRowParam(rowItem, model.UnionCond);
|
||
sqlValue += UnionCond;
|
||
}
|
||
return sqlValue;
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:多明细框下左边刷新右边的明细</para>
|
||
/// <para>创建人:王一帆</para>
|
||
/// <para>创建日期:2022-12-02 </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 OnRowCellClick(object sender, RowCellClickEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
WaitForm.ShowForm();
|
||
GridControlEx mainGridObj = splitMainControl.Panel1.Tag as GridControlEx;
|
||
DataRow rowItem = mainGridObj.GetViewFocusedDataRow();
|
||
if (rowItem != null)
|
||
{
|
||
if (splitMainControl.Panel2.Tag is GridControlEx)
|
||
{
|
||
GridControlEx DetailGridObj = splitMainControl.Panel2.Tag as GridControlEx;
|
||
GridDetailModel gridMainModel = mainGridObj.Tag as GridDetailModel;
|
||
GridDetailModel gridDetailModel = DetailGridObj.Tag as GridDetailModel;
|
||
string primaryKey = BaseImpl.GetBasePrimaryKey(gridMainModel.UnionModule);
|
||
string searchSql = this.GetSearchSql(gridDetailModel, rowItem, primaryKey);
|
||
DetailGridObj.LastSearchSql = searchSql;
|
||
DetailGridObj.SetGridViewDataSource(MainImpl.GetDataTableResult(searchSql));
|
||
}
|
||
else if (splitMainControl.Panel2.Tag is ChartControlEx)
|
||
{
|
||
ChartControlEx DetailGridObj = splitMainControl.Panel2.Tag as ChartControlEx;
|
||
GridDetailModel gridMainModel = mainGridObj.Tag as GridDetailModel;
|
||
GridDetailModel gridDetailModel = DetailGridObj.Tag as GridDetailModel;
|
||
string primaryKey = BaseImpl.GetBasePrimaryKey(gridMainModel.UnionModule);
|
||
string searchSql = this.GetSearchSql(gridDetailModel, rowItem, primaryKey);
|
||
DetailGridObj.CreateChart(MainImpl.GetDataTableResult(searchSql));
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Instance.WriteError(ex);
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show("加载明细数据失败!" + Message);
|
||
}
|
||
finally
|
||
{
|
||
WaitForm.HideForm();
|
||
}
|
||
}
|
||
|
||
|
||
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// <para>说明:表格拖拽完成</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-11-14 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The sender.</param>
|
||
/// <param name="e">The e.</param>
|
||
protected void OnDragGridCompleted(object sender, GridDragGridArgs e)
|
||
{
|
||
if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0 || this.ParentGridEx == null) return;
|
||
|
||
try
|
||
{
|
||
if (MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||
{
|
||
GridColumnCollection gridColumns = this.ParentGridEx.GridView.Columns;
|
||
DataTable table = this.ParentGridEx.gridControl.DataSource as DataTable;
|
||
foreach (DataRow rowItem in e.GridViewSelectRows)
|
||
{
|
||
DataRow newRow = table.NewRow();
|
||
foreach (GridColumn col in gridColumns)
|
||
{
|
||
if ("id".Equals(col.FieldName) || col.FieldName.Equals(this.DrgaParentPrimaryKey)) continue;
|
||
|
||
if (rowItem.Table.Columns.Contains(col.FieldName))
|
||
{
|
||
// 列中是否包含对应字段,包含则使用值
|
||
newRow[col.FieldName] = rowItem[col.FieldName];
|
||
}
|
||
else
|
||
{
|
||
// 未包含字段,则使用控件默认值.
|
||
GridColumnModel model = col.Tag as GridColumnModel;
|
||
string fieldValue = BaseImpl.GetDefaultValue(model.DefaultValue);
|
||
|
||
if (!string.IsNullOrEmpty(model.DefaultValue))
|
||
{
|
||
newRow[col.FieldName] = fieldValue;
|
||
}
|
||
}
|
||
}
|
||
table.Rows.Add(newRow);
|
||
}
|
||
|
||
this.ParentGridEx.GridView.ClearSelection();
|
||
this.ParentGridEx.GridView.SelectRowHandler(table.Rows.Count - 1);
|
||
this.ParentGridEx.GridView.UpdateCurrentRow();
|
||
this.ParentGridEx.GridView.ShowEditor();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
LogHelper.Instance.WriteError(ex);
|
||
//MessageUtil.Show(ResourceKeys.OperFault);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:初始化分割条位置</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-01-24</para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private void InitializeSplitterPosition()
|
||
{
|
||
try
|
||
{
|
||
string splitterPosition = IniHelper.Read(string.Format("base_TabMultipledetailsMain_{0}", this.Model.ModuleCode));
|
||
if (!string.IsNullOrEmpty(splitterPosition))
|
||
{
|
||
this.splitMainControl.SplitterPosition = Convert.ToInt32(splitterPosition);
|
||
}
|
||
else
|
||
{
|
||
this.splitMainControl.SplitterPosition = Screen.PrimaryScreen.WorkingArea.Width / 2;
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
LogHelper.Instance.WriteError(e);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:并行分割条位置变化事件</para>
|
||
/// <para>创建人:王一帆</para>
|
||
/// <para>创建日期:2020-08-24</para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
void OnSplitterPositionChanged(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (_isInitFinish)
|
||
{
|
||
IniHelper.Write(string.Format("base_TabMultipledetailsMain_{0}", this.Model.ModuleCode), this.splitMainControl.SplitterPosition + "");
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 下方表格执行右键后刷新
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void OnGridAfterRightCallBack(object sender, EventArgs e)
|
||
{
|
||
if (splitMainControl.Panel1.Tag != null && splitMainControl.Panel1.Tag is GridControlEx)
|
||
{
|
||
GridControlEx grdExMain = (splitMainControl.Panel1.Tag as GridControlEx);
|
||
GridDetailModel MainModel = grdExMain.Tag as GridDetailModel;
|
||
|
||
if (MainModel.BottomRefreshMain)
|
||
{
|
||
//刷新主表,主表刷新后会默认刷新下方左右表
|
||
int oldRowHandle = gridEx1.GridControlObj.GridView.FocusedRowHandle;//上一次选中行
|
||
|
||
if (BillDetailRightGridCallBack!=null)
|
||
{
|
||
this.BillDetailRightGridCallBack(sender, e);
|
||
}
|
||
else
|
||
{
|
||
this.ParentControlEx.SearchLastGrid();
|
||
}
|
||
|
||
|
||
|
||
if (gridEx1.SearchObj.RememberRow)
|
||
{
|
||
gridEx1.GridControlObj.GridView.SelectRowHandler(oldRowHandle);
|
||
}
|
||
}
|
||
else if (MainModel.BottomDetailsRefresh)
|
||
{
|
||
gridEx1.SearchObj.SearchLastGrid();
|
||
}
|
||
}
|
||
|
||
if (splitMainControl.Panel2.Tag != null && splitMainControl.Panel2.Tag is GridControlEx)
|
||
{
|
||
GridControlEx grdExAdditional = (splitMainControl.Panel2.Tag as GridControlEx);
|
||
GridDetailModel AdditionalModel = grdExAdditional.Tag as GridDetailModel;
|
||
if (AdditionalModel.BottomRefreshMain)
|
||
{
|
||
//刷新主表,主表刷新后会默认刷新下方左右表
|
||
int oldRowHandle = gridEx2.GridControlObj.GridView.FocusedRowHandle;//上一次选中行
|
||
|
||
if (BillDetailRightGridCallBack != null)
|
||
{
|
||
this.BillDetailRightGridCallBack(sender, e);
|
||
}
|
||
else
|
||
{
|
||
this.ParentControlEx.SearchLastGrid();
|
||
}
|
||
|
||
|
||
if (gridEx2.SearchObj.RememberRow)
|
||
{
|
||
gridEx2.GridControlObj.GridView.SelectRowHandler(oldRowHandle);
|
||
}
|
||
}
|
||
else if (AdditionalModel.BottomDetailsRefresh)
|
||
{
|
||
gridEx2.SearchObj.SearchLastGrid();
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 下方表格保存后刷新
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void OnRefreshMainTable(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
//刷新主表,主表刷新后会默认刷新下方左右表
|
||
int oldRowHandle = gridEx1.GridControlObj.GridView.FocusedRowHandle;//上一次选中行
|
||
int oldRowHandle2 = gridEx2.GridControlObj.GridView.FocusedRowHandle;//上一次选中行
|
||
|
||
if (BillDetailRightGridCallBack != null)
|
||
{
|
||
this.BillDetailRightGridCallBack(sender, e);
|
||
}
|
||
else
|
||
{
|
||
this.ParentControlEx.SearchLastGrid();
|
||
}
|
||
|
||
if (gridEx1.SearchObj.RememberRow)
|
||
{
|
||
gridEx1.GridControlObj.GridView.SelectRowHandler(oldRowHandle);
|
||
}
|
||
if (gridEx2.SearchObj.RememberRow)
|
||
{
|
||
gridEx2.GridControlObj.GridView.SelectRowHandler(oldRowHandle2);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//设置条件值
|
||
public void SetConditionValues(DataRow dr)
|
||
{
|
||
try
|
||
{
|
||
if (this.gridEx1.SearchObj != null)
|
||
{
|
||
foreach (ControlModel item in this.gridEx1.SearchObj.ControlModels)
|
||
{
|
||
if (dr.Table.Columns.Contains(item.FieldName))
|
||
{
|
||
this.gridEx1.SearchObj.SetControlValue(item, dr[item.FieldName] + "");
|
||
}
|
||
}
|
||
}
|
||
if (this.gridEx2.SearchObj != null)
|
||
{
|
||
foreach (ControlModel item in this.gridEx2.SearchObj.ControlModels)
|
||
{
|
||
if (dr.Table.Columns.Contains(item.FieldName))
|
||
{
|
||
this.gridEx2.SearchObj.SetControlValue(item, dr[item.FieldName] + "");
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
|
||
//重新根据主表数据查询
|
||
private void SearchObj_OnSearchAfterCallBack(object sender, EventArgs e)
|
||
{
|
||
|
||
DataRow rowItem = this.ParentGridEx.GetViewFocusedDataRow();
|
||
int i = 0;
|
||
foreach (GridDetailModel model in this._gridDetail)
|
||
{
|
||
if (model.QueryAgain)
|
||
{
|
||
if (i == 0)
|
||
{
|
||
string sqlValue = model.IsReadOnly || model.IsChart ? model.DetailSql : model.SystemModel.MenuSql;
|
||
sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue);
|
||
gridEx1.SearchObj.SearchGrid(sqlValue, true, false);
|
||
}
|
||
else if (1 == 1)
|
||
{
|
||
string sqlValue = model.IsReadOnly || model.IsChart ? model.DetailSql : model.SystemModel.MenuSql;
|
||
sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue);
|
||
gridEx2.SearchObj.SearchGrid(sqlValue, true, false);
|
||
}
|
||
}
|
||
i++;
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
}
|