Files
lserp_cs_6.0/插件库/Lskj.Control/TabMultipledetails.cs
T
2026-07-02 10:11:39 +00:00

860 lines
38 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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右键执行后回调(针对单据,单据主表明细不是ModuleGridExSearchLastGrid方法无效)
/// </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++;
}
}
}
}