Files
lserp_cs_6.0/插件库/Lskj.Control/TabControlEx.cs
T
cyf 1cbed9fd73 SVN r500
SVN-Revision: r500
2025-04-18 10:25:17 +00:00

1655 lines
80 KiB
C#

/******************************
* 说明:TabControlEx多标签(标签内容包含表格和图表) 应用于审核附加信息、基础档案审核附加信息
* 创建人:龚宇超
* 创建日期:2018-01-10
* 修改人:
* 修改日期:
* 修改备注:
* 版本:1.0.0.0
******************************/
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 DevExpress.XtraTab;
using Lskj.Util;
using Lskj.Business.Impl;
using Lskj.Control.Model;
using Lskj.Model;
using DevExpress.XtraEditors;
using Lskj.Data;
using DevExpress.XtraGrid.Columns;
using Lskj.Business;
using DevExpress.XtraGrid.Views.Grid;
using System.Threading.Tasks;
using System.Collections;
namespace Lskj.Control
{
/// <summary>
/// 多标签,标签内容包含表格和图表
/// </summary>
public partial class TabControlEx : UserControl
{
/// <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 bool IsDragDetail;
/// <summary>
/// 拖拽目标主键字段
/// </summary>
public string DrgaParentPrimaryKey;
/// <summary>
/// 添加数据sql赋值
/// </summary>
public string ControlSql;
/// <summary>
/// tab标签
/// </summary>
private List<GridDetailModel> _gridDetail;
/// <summary>
/// tab标签里明细数据
/// </summary>
private List<GridDetailModel> _gridIntoDetail;
/// <summary>
/// 是否为Mrp明细页签
/// </summary>
private bool isMrpDetail = false;
/// <summary>
/// The system model
/// </summary>
public DynamicModel Model;
/// <summary>
/// 父表格
/// </summary>
public GridControlEx ParentGridEx;
/// <summary>
/// Mrp父表格
/// </summary>
public GridControlEx MrpParentGridEx;
/// <summary>
/// Mrp父明细表格
/// </summary>
public GridControlEx MrpDetailGridEx;
/// <summary>
/// 父容器
/// </summary>
public MyControl ParentControlEx;
/// <summary>
/// 明细数据里的主表格
/// </summary>
public ModuleGridEx ModuleGridObj;
/// <summary>
/// 选项卡
/// </summary>
public XtraTabControl TabControlObj
{
get { return this.xtc_container; }
}
/// <summary>
/// 右键菜单执行后调用
/// </summary>
/// <param name="sender">The sender.</param>
public event EventHandler OnRightCallback;
/// <summary>
/// 在保存网格回调(右键)
/// </summary>
/// <param name="sender">The sender.</param>
public event EventHandler OnDetailRightCallback;
/// <summary>
/// 在保存网格回调
/// </summary>
/// <param name="sender">The sender.</param>
public event EventHandler OnDetailSaveGridCallBack;
//拖拽模式拖拽完成委托
public delegate void DragCompleteCallbackEventHandler(object sender, GridDragGridArgs e);
//拖拽模式拖拽完成回调
public event DragCompleteCallbackEventHandler OnDragCompleteCallback;
/// <summary>
/// 拖拽模式DetailView双击点击事件回调
/// </summary>
public event EventHandler OnDetailViewDoubleClickCallBack;
/// <summary>
/// mrp拖拽完成后
/// </summary>
public event EventHandler OnMrpDragCallback;
public event EventHandler OnMrpBtnClickCallback;
/// <summary>
/// 明细页签与主模块对应关系
/// </summary>
public Dictionary<string, List<DetailTabPageModel>> DetailTabPagesDic = new Dictionary<string, List<DetailTabPageModel>>();
/// <summary>
/// 页签控件集合
/// </summary>
public Dictionary<GridDetailModel, object> PageControlsDic = new Dictionary<GridDetailModel, object>();
public TabControlEx()
{
InitializeComponent();
this.Disposed += OnTabControlExDisposed;
}
/// <summary>
/// <para>说明:绑定选项卡</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-01-09</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
public void InitTabPages(List<GridDetailModel> gridDetail, bool isGridmerge = true, bool isAddPages = false)
{
this._gridDetail = gridDetail;
if (!isAddPages)
{
this.xtc_container.TabPages.Clear();
}
string DetaiName = string.Empty;
Dictionary<object, Hashtable> dataCaches = Model != null ? Model.DataCaches : null;
foreach (GridDetailModel model in this._gridDetail)
{
object control = PageControlsDic.ContainsKey(model) ? PageControlsDic[model] : null;
bool hasControl = control != null;
if (DetaiName.Equals(model.DetailName) && isGridmerge) continue;
GridDetailModel[] isMeage = gridDetail.Cast<GridDetailModel>().Where(x => x.DetailName.Equals(model.DetailName)).ToArray();
XtraTabPage page = new XtraTabPage();
page.SizeChanged += OnPageSizeChanged;
page.Text = model.DetailName;
if (SystemInfo.Instance.GridRowFontSize > 0)
{
//页签大小
FontFamily fontFamily = page.Appearance.Header.Font.FontFamily;
page.Appearance.Header.Font = new System.Drawing.Font(fontFamily, SystemInfo.Instance.GridRowFontSize);
}
if (model.IsChart)
{
ChartControlEx chartEx = hasControl && control is ChartControlEx ? (ChartControlEx)control : 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 (!dataCaches.GetValue(chartEx, "ChartParams", out DataTable dtChartParams))
{
dtChartParams = BaseModuleImpl.GetChartParams(model.FormKey);
}
if (!dataCaches.GetValue(chartEx, "ChartRightMenus", out DataTable dtBaseGridRightMenus))
{
dtBaseGridRightMenus = BaseModuleImpl.GetBaseGridRightMenus(model.FormKey);
}
chartEx.SetCharts(dtChartParams);
chartEx.SetChartRightMenus(dtBaseGridRightMenus, this.Model, OnGridViewRightCallBack);
chartEx.Tag = model;
page.Tag = chartEx;
page.Controls.Add(chartEx);
}
else if (model.IsExcel)
{
ExcelControlEx excelEx = hasControl && control is ExcelControlEx ? (ExcelControlEx)control : new ExcelControlEx();
excelEx.Dock = DockStyle.Fill;
excelEx.Tag = model;
page.Tag = excelEx;
page.Controls.Add(excelEx);
}
else if (model.IsWebView)
{
// 加载网页
string url = model.DetailSql.StartsWith("http") ? model.DetailSql : SystemInfo.Instance.OAUrl + model.DetailSql;
//url= System.Web.HttpUtility.UrlEncode(url);
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink();
webView.IsDownVerify = true;
webView.Dock = DockStyle.Fill;
webView.Tag = model;
page.Tag = webView;
page.Controls.Add(webView);
webView.LoadUrl(ReplaceHelper.ReplaceUserInfo(url));
}
else
{
FrmWebBrowser webView = hasControl && control is FrmWebBrowser ? (FrmWebBrowser)control : new FrmWebBrowser();
webView.Dock = DockStyle.Fill;
webView.Tag = model;
page.Tag = webView;
page.Controls.Add(webView);
webView.FrmLoad(ReplaceHelper.ReplaceUserInfo(url));
}
}
else if (model.IsWebView2)
{
// 加载网页
string url = model.DetailSql.StartsWith("http") ? model.DetailSql : SystemInfo.Instance.OAUrl + model.DetailSql;
//url= System.Web.HttpUtility.UrlEncode(url);
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink();
webView.Dock = DockStyle.Fill;
webView.Tag = model;
page.Tag = webView;
page.Controls.Add(webView);
webView.LoadUrl(ReplaceHelper.ReplaceUserInfo(url));
}
else
{
FrmWebBrowser2 webView = hasControl && control is FrmWebBrowser2 ? (FrmWebBrowser2)control : new FrmWebBrowser2();
webView.Dock = DockStyle.Fill;
webView.Tag = model;
page.Tag = webView;
page.Controls.Add(webView);
webView.FrmLoad(ReplaceHelper.ReplaceUserInfo(url));
}
}
else if (model.IsWebView3)
{
// 加载网页
string url = model.DetailSql.StartsWith("http") ? model.DetailSql : SystemInfo.Instance.OAUrl + model.DetailSql;
//url= System.Web.HttpUtility.UrlEncode(url);
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink();
webView.AllowDownload = false;
webView.Dock = DockStyle.Fill;
webView.Tag = model;
page.Tag = webView;
page.Controls.Add(webView);
webView.LoadUrl(ReplaceHelper.ReplaceUserInfo(url));
}
else
{
FrmWebBrowser2 webView = hasControl && control is FrmWebBrowser2 ? (FrmWebBrowser2)control : new FrmWebBrowser2();
webView.Dock = DockStyle.Fill;
webView.Tag = model;
webView.AllowDownload = false;
page.Tag = webView;
page.Controls.Add(webView);
webView.FrmLoad(ReplaceHelper.ReplaceUserInfo(url));
}
}
else if (model.IsAddPanel && isGridmerge)
{
// 加载添加界面
ModulePanelEx modulePanel = hasControl && control is ModulePanelEx ? (ModulePanelEx)control : new ModulePanelEx();
modulePanel.Dock = DockStyle.Fill;
if (!dataCaches.GetValue(modulePanel, "BasePrimaryKey", out string primaryKey))
{
primaryKey = BaseImpl.GetBasePrimaryKey(this.Model.ModuleCode);
}
modulePanel.PrimaryKey = primaryKey;
if (!dataCaches.GetValue(modulePanel, "SystemDllRow", out DataRow systemRow))
{
systemRow = MainImpl.GetSystemdllTab(this.Model.ModuleCode);
}
modulePanel.InitializeControl(new ModuleModel(systemRow), this.Model);
//modulePanel.OnAddRecordCallBack += new EventHandler(OnAddRecordCallBack);
//modulePanel.OnCloseCallback += new EventHandler(OnAddRecordCallBack);
modulePanel.OperatePanelControlObj.Visible = false;
modulePanel.SpeciesPanelControlObj.Visible = false;
modulePanel.Tag = model;
page.Tag = modulePanel;
page.Controls.Add(modulePanel);
}
else if (model.IsDetailView)
{
ModuleGridDetailEx DetailEx = hasControl && control is ModuleGridDetailEx ? (ModuleGridDetailEx)control : new ModuleGridDetailEx();
DetailEx.Dock = DockStyle.Fill;
if (!dataCaches.GetValue(DetailEx, "DynamicModel", out DynamicModel dyncModel))
{
dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, model.UnionModule, "0" });
}
if (!dataCaches.GetValue(DetailEx, "SystemDllRow", out DataRow moduleInformation))
{
moduleInformation = MainImpl.GetSystemdllTab(model.UnionModule);
}
if (moduleInformation == null)
{
MessageUtil.Show("没有找到编号为" + model.UnionModule + "的模块信息");
return;
}
if (!dataCaches.GetValue(DetailEx, "SysModel", out model.SystemModel))
{
model.SystemModel = new ModuleModel(moduleInformation);
}
if (!dataCaches.GetValue(DetailEx, "Details", out List<GridDetailModel> details))
{
details = GetDetails(model.SystemModel.ModeCode);//底部多标签表格数据
}
DetailEx.GridDetailList = details;
DetailEx.IsDragDetail = IsDragDetail;
DetailEx.TcButtom.OnDetailViewDoubleClickCallBack += OnDetailGridViewDoubleClick;
DetailEx.TcButtom.OnDragCompleteCallback += OnDragGridCompleted;
DetailEx.InitializeControl(model.SystemModel, dyncModel);//初始化控件
if (!Model.DataCaches.GetValue(DetailEx, "BaseGridRightMenus", out DataTable rightDt))
{
rightDt = rightDt = BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn);
}
if ((rightDt != null && rightDt.Rows.Count > 0) || this.isMrpDetail)
{
this.isMrpDetail = true;
//gridEx.VisibleMrpSearchPanel = true;
}
if (IsDragDetail && this.ParentGridEx != null && model.IsDrag)
{
// 拖拽模式,绑定拖拽对象
//GridDragGrid dragGrid = new GridDragGrid(DetailEx.ModuleGridObj.GridControlObj.GridView, this.ParentGridEx.GridView);
//dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted);
}
if (this.MrpParentGridEx != null && model.IsMrpDrag)//mrp拖拽
{
GridDragGrid dragGrid = new GridDragGrid(this.MrpParentGridEx.GridView, DetailEx.ModuleGridObj.GridControlObj.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted);
}
if (this.MrpDetailGridEx != null && model.IsMrpDrag)//mrp拖拽
{
GridDragGrid dragGrid = new GridDragGrid(this.MrpDetailGridEx.GridView, DetailEx.ModuleGridObj.GridControlObj.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted);
}
if (this.isMrpDetail && this.OnMrpBtnClickCallback != null)//当前为mrp模块
{
DetailEx.ModuleGridObj.RightGridCallBack += this.OnMrpBtnClickCallback;
}
DetailEx.ModuleGridObj.VisibleSearchPanel = Model.IsDetailSearch || model.DetailSearch;
DetailEx.ModuleGridObj.GridControlObj.Tag = model;
page.Tag = DetailEx.ModuleGridObj.GridControlObj;
page.Controls.Add(DetailEx);
}
else
{
if (model.IsReadOnly && isMeage.Count() == 1)
{
PanelControl plBottom = new PanelControl();
plBottom.Dock = DockStyle.Bottom;
plBottom.Visible = false;
PanelControl plMain = new PanelControl();
plMain.Dock = DockStyle.Fill;
GridControlEx gridEx = null;
if (model.AutoMultiHeader == 1)
{
gridEx = hasControl && control is BandedGridControlEx ? (BandedGridControlEx)control : new BandedGridControlEx();
}
else
{
gridEx = hasControl && control is GridControlEx ? (GridControlEx)control : new GridControlEx();
}
gridEx.Dock = DockStyle.Fill;
gridEx.Tag = model;
gridEx.Parent = plMain;
gridEx.Model = this.Model;
if (!dataCaches.GetValue(model, "GridColumns", out DataTable dtGridColumns))
{
dtGridColumns = model.GridColumns;
}
gridEx.SetReadOnlyColumns(dtGridColumns, model.GridCustomColumnKey);
//gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack);
//gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey));
if (!dataCaches.GetValue(gridEx, "BaseGridRightMenus", out DataTable dtBaseGridRightMenus))
{
dtBaseGridRightMenus = BaseModuleImpl.GetBaseGridRightMenus(model.FormKey);
}
if (!dataCaches.GetValue(gridEx, "BaseGridRowColors", out DataTable dtBaseGridRowColors))
{
dtBaseGridRowColors = BaseModuleImpl.GetBaseGridRowColors(model.FormKey);
}
gridEx.SetGridRightMenus(dtBaseGridRightMenus, this.Model, OnGridViewRightCallBack);
gridEx.SetGridRowColors(dtBaseGridRowColors);
if (model.IsCheck == 1)//加载复选框
{
GridDragGrid.GridAddCheckBox(gridEx.GridView);
}
if (model.LoadFilter)//加载筛选行
{
gridEx.GridView.OptionsView.ShowAutoFilterRow = true;
}
if (IsDragDetail && this.ParentGridEx != null && model.IsDrag)
{
// 拖拽模式,绑定拖拽对象
GridDragGrid dragGrid = new GridDragGrid(gridEx.GridView, this.ParentGridEx.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted);
}
if (this.MrpParentGridEx != null && model.IsMrpDrag)//mrp拖拽
{
GridDragGrid dragGrid = new GridDragGrid(this.MrpParentGridEx.GridView, gridEx.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted);
}
if (this.MrpDetailGridEx != null && model.IsMrpDrag)//mrp拖拽
{
GridDragGrid dragGrid = new GridDragGrid(this.MrpDetailGridEx.GridView, gridEx.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted);
}
// 加载配置查询条件
if (Model != null && Model.IsDetailSearch)
{
plBottom.Visible = true;
MyControl searchObj = new MyControl(model.DetailSql, gridEx);
if (!dataCaches.GetValue(gridEx, "CustomQueryFields", out DataTable dtCustomQueryFields))
{
dtCustomQueryFields = BaseModuleImpl.GetCustomQueryFields(model.FormKey);
}
plBottom.Height = searchObj.InitSearchControl(dtCustomQueryFields, plBottom);
}
page.Tag = gridEx;
page.Controls.AddRange(new PanelControl[] { plBottom, plMain });
}
else if (isMeage.Count() > 1 && isGridmerge)
{
DetaiName = model.DetailName;
TabMultipledetails tabMultipledetails = hasControl && control is TabMultipledetails ? (TabMultipledetails)control : new TabMultipledetails();
tabMultipledetails.Model = this.Model;
tabMultipledetails.ParentGridEx = this.ParentGridEx;
tabMultipledetails.ParentControlEx = this.ParentControlEx;
tabMultipledetails.IsDragDetail = this.IsDragDetail;
tabMultipledetails.Model = this.Model;
tabMultipledetails.DrgaParentPrimaryKey = this.DrgaParentPrimaryKey;
tabMultipledetails.InitTabPages(isMeage);
tabMultipledetails.Dock = DockStyle.Fill;
tabMultipledetails.Tag = model;
page.Tag = tabMultipledetails;
page.Controls.Add(tabMultipledetails);
}
else
{
ModuleGridEx gridEx = hasControl && control is ModuleGridEx ? (ModuleGridEx)control : new ModuleGridEx();
if (!dataCaches.GetValue(gridEx, "DynamicModel", out DynamicModel dyncModel))
{
dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, model.UnionModule, "0" });
}
if (!dataCaches.GetValue(gridEx, "SystemDllRow", out DataRow moduleInformation))
{
moduleInformation = MainImpl.GetSystemdllTab(model.UnionModule);
}
if (moduleInformation == null)
{
MessageUtil.Show("没有找到编号为" + model.UnionModule + "的模块信息");
return;
}
if (!dataCaches.GetValue(gridEx, "SysModel", out model.SystemModel))
{
model.SystemModel = new ModuleModel(moduleInformation);
}
if (Model != null)
{
if (!dataCaches.GetValue(gridEx, "ParentPrimaryKey", out string primaryKey))
{
primaryKey = BaseImpl.GetBasePrimaryKey(Model.ModuleCode);
}
model.SystemModel.ParmaryKey = primaryKey;
}
gridEx.OnSaveGridCallBack += OnDetailSaveGridCallBack;
gridEx.DetailRightGridCallBack += OnDetailRightCallback;
gridEx.Name = "gridEx";
gridEx.IsDetail = true;
gridEx.Dock = DockStyle.Fill;
gridEx.OperShortMode = Model.IsDetailSearch; // 不显示简短模式
gridEx.VisibleSearchPanel = Model.IsDetailSearch || model.DetailSearch;
if (!dataCaches.GetValue(gridEx, "UnionBaseGridRightMenus", out DataTable rightDt))
{
rightDt = BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn);
}
if ((rightDt != null && rightDt.Rows.Count > 0) || this.isMrpDetail)
{
this.isMrpDetail = true;
gridEx.VisibleMrpSearchPanel = true;
}
gridEx.VisibleOperPanel = !model.IsReadOnly;
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;
if (model.IsCheck == 1)//加载复选框
{
GridDragGrid.GridAddCheckBox(gridEx.GridControlObj.GridView);
//判断父表格是否是复选框
if (model.RecordDetailsCheckbox&& ParentGridEx!=null && ParentGridEx.GridView.OptionsSelection.MultiSelect == true)
{
gridEx.TagName = model.DetailName;
gridEx.GridControlObj.GridView.SelectionChanged += GridView_SelectionChanged;
}
}
if (model.LoadFilter)//加载筛选行
{
gridEx.GridControlObj.GridView.OptionsView.ShowAutoFilterRow = true;
}
if (this.ParentGridEx != null && model.IsDrag)//IsDragDetail &&
{
gridEx.GridControlObj.GridView.DoubleClick += OnDetailGridViewDoubleClick;
// 拖拽模式,绑定拖拽对象
if (model.IsDrag)
{
GridDragGrid dragGrid = new GridDragGrid(gridEx.GridControlObj.GridView, this.ParentGridEx.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted);
}
}
if (this.MrpParentGridEx != null && model.IsMrpDrag)//mrp拖拽
{
GridDragGrid dragGrid = new GridDragGrid(this.MrpParentGridEx.GridView, gridEx.GridControlObj.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted);
}
if (this.MrpDetailGridEx != null && model.IsMrpDrag)//mrp拖拽
{
GridDragGrid dragGrid = new GridDragGrid(this.MrpDetailGridEx.GridView, gridEx.GridControlObj.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnMrpDragGridCompleted);
}
if (this.isMrpDetail && this.OnMrpBtnClickCallback != null)//当前为mrp模块
{
gridEx.RightGridCallBack += this.OnMrpBtnClickCallback;
}
if (model.AutoRefresh && !_UnRefresh && isGridmerge)
gridEx.SearchObj.SearchGrid();
page.Tag = gridEx.GridControlObj;
page.Controls.Add(gridEx);
}
}
this.xtc_container.TabPages.Add(page);
DetailTabPageModel detailTabPageModel = new DetailTabPageModel();
detailTabPageModel.TabPageIndex = this._gridDetail.IndexOf(model);
detailTabPageModel.DetailTabPage = page;
detailTabPageModel.DetailModel = model;
if (!string.IsNullOrEmpty(model.ParentModuleCode))
{
if (this.DetailTabPagesDic.ContainsKey(model.ParentModuleCode))
{
List<DetailTabPageModel> detailTabPageModels = this.DetailTabPagesDic[model.ParentModuleCode];
detailTabPageModels.Add(detailTabPageModel);
}
else
{
List<DetailTabPageModel> detailTabPageModels = new List<DetailTabPageModel>();
detailTabPageModels.Add(detailTabPageModel);
this.DetailTabPagesDic.Add(model.ParentModuleCode, detailTabPageModels);
}
}
}
}
/// <summary>
/// 主表和当前页签中表格配置了复选框时,记录当前页签表格的选中记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GridView_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
{
DataRow FatherTableRow = this.ParentGridEx.GridView.GetFocusedDataRow();
if (FatherTableRow == null) return;
XtraTabPage RefreshPage = this.xtc_container.SelectedTabPage;
Object moduleObject = RefreshPage.Controls.Cast<Object>().FirstOrDefault();
if (moduleObject is ModuleGridEx)
{
ModuleGridEx moduleGridEx = moduleObject as ModuleGridEx;
DataRow[] rowArray = moduleGridEx.GridControlObj.GetViewFocusedDataRows();
string value = string.Empty;
foreach (DataRow item in rowArray)
{
value += item[moduleGridEx.ParmaryKey] + ",";
}
value=value.Trim(',');
GridDetailModel model = GetGridDetailModel(RefreshPage);
if (ParentControlEx.DetailSelection.ContainsKey(model.DetailName))
{
Dictionary<DataRow, string> dictionary = ParentControlEx.DetailSelection[model.DetailName];
if (dictionary.ContainsKey(FatherTableRow))
{
dictionary[FatherTableRow] = value;
}
else
{
dictionary.Add(FatherTableRow, value);
}
}
else
{
Dictionary<DataRow, string> dictionary = new Dictionary<DataRow, string>();
dictionary.Add(FatherTableRow, value);
ParentControlEx.DetailSelection.Add(model.DetailName, dictionary);
}
}
}
/// <summary>
/// 获取数据源缓存
/// </summary>
/// <param name="cachesDic"></param>
/// <param name="dynamicModel"></param>
/// <param name="isGridmerge"></param>
/// <param name="isAddPages"></param>
public void GetDataCaches(Dictionary<object, Hashtable> cachesDic, bool isGridmerge = true, bool isAddPages = false)
{
//获取通用数据
Task<DynamicModel> dynamicModelTask = cachesDic.GetTask<DynamicModel>(this, "DynamicModel");
Task<List<GridDetailModel>> detailsTask = cachesDic.GetTask<List<GridDetailModel>>(this, "Details");
DynamicModel dynamicModel = dynamicModelTask.Result;
List<GridDetailModel> details = detailsTask.Result;
string DetaiName = string.Empty;
PageControlsDic.Clear();
foreach (GridDetailModel model in details)
{
if (DetaiName.Equals(model.DetailName) && isGridmerge)
{
continue;
}
List<GridDetailModel> isMeage = details.Cast<GridDetailModel>().Where(x => x.DetailName.Equals(model.DetailName)).ToList();
if (model.IsChart)
{
ChartControlEx chartEx = new ChartControlEx();
Task<DataTable> chartParamsTask = cachesDic.AddTask(chartEx, "ChartParams", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetChartParams(model.FormKey);
}));
Task<DataTable> chartRightMenusTask = cachesDic.AddTask(chartEx, "ChartRightMenus", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetBaseGridRightMenus(model.FormKey);
}));
PageControlsDic.Add(model, chartEx);
}
else if (model.IsExcel)
{
ExcelControlEx excelEx = new ExcelControlEx();
PageControlsDic.Add(model, excelEx);
}
else if (model.IsWebView)
{
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = new FrmMiniBlink();
PageControlsDic.Add(model, webView);
}
else
{
FrmWebBrowser webView = new FrmWebBrowser();
PageControlsDic.Add(model, webView);
}
}
else if (model.IsWebView2)
{
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = new FrmMiniBlink();
PageControlsDic.Add(model, webView);
}
else
{
FrmWebBrowser2 webView = new FrmWebBrowser2();
PageControlsDic.Add(model, webView);
}
}
else if (model.IsWebView3)
{
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = new FrmMiniBlink();
PageControlsDic.Add(model, webView);
}
else
{
FrmWebBrowser2 webView = new FrmWebBrowser2();
PageControlsDic.Add(model, webView);
}
}
else if (model.IsAddPanel && isGridmerge)
{
ModulePanelEx modulePanel = new ModulePanelEx();
Task<string> basePrimaryKeyTask = cachesDic.AddTask(modulePanel, "BasePrimaryKey", new Task<string>(() =>
{
return BaseImpl.GetBasePrimaryKey(dynamicModel.ModuleCode);
}));
Task<DataRow> systemdllTabTask = cachesDic.AddTask(modulePanel, "SystemDllRow", new Task<DataRow>(() =>
{
return MainImpl.GetSystemdllTab(dynamicModel.ModuleCode);
}));
modulePanel.GetDataCaches(cachesDic, new ModuleModel(systemdllTabTask.Result), dynamicModel);
PageControlsDic.Add(model, modulePanel);
}
else if (model.IsDetailView)
{
ModuleGridDetailEx DetailEx = new ModuleGridDetailEx();
Task<DynamicModel> detailViewDynamicModelTask = cachesDic.AddTask(DetailEx, "DynamicModel", new Task<DynamicModel>(() =>
{
DynamicModuleModel dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, dynamicModel.Privilege, model.UnionModule, "0" });
dyncModel.DataCaches = cachesDic;
return dyncModel;
}));
Task<string> basePrimaryKeyTask = cachesDic.AddTask(DetailEx, "BasePrimaryKey", new Task<string>(() =>
{
return BaseImpl.GetBasePrimaryKey(dynamicModel.ModuleCode);
}));
Task<DataRow> detailViewSystemDllRowTask = cachesDic.AddTask(DetailEx, "SystemDllRow", new Task<DataRow>(() =>
{
return MainImpl.GetSystemdllTab(model.UnionModule);
}));
if (detailViewSystemDllRowTask.Result == null)
{
return;
}
Task<ModuleModel> detailViewSystemModelTask = cachesDic.AddTask(DetailEx, "SysModel", new Task<ModuleModel>(() =>
{
return new ModuleModel(detailViewSystemDllRowTask.Result);
}));
Task<List<GridDetailModel>> detailViewDetailsTask = cachesDic.AddTask(DetailEx, "Details", new Task<List<GridDetailModel>>(() =>
{
return GetDetails(detailViewSystemModelTask.Result.ModeCode);//底部多标签表格数据
}));
Task<DataTable> baseGridRightMenusTask = cachesDic.AddTask(DetailEx, "BaseGridRightMenus", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn);
}));
DetailEx.GetDataCaches(cachesDic);
PageControlsDic.Add(model, DetailEx);
}
else
{
if (model.IsReadOnly && isMeage.Count() == 1)
{
GridControlEx gridEx = model.AutoMultiHeader == 1 ? new BandedGridControlEx() : new GridControlEx();
Task<bool> hasExistsSettingTableTask = cachesDic.AddTask(gridEx, "HasExistsSettingTable", new Task<bool>(() =>
{
return BaseImpl.HasExistsTable(ResourceKeys.SettingTableName);
}));
Task<DataTable> setGridRightMenusTask = cachesDic.AddTask(gridEx, "RightMenuBtn", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetBaseGridRightMenus(dynamicModel.ModuleCode);
}));
Task<DataTable> sourceColumnByDatabaseTask = cachesDic.AddTask(gridEx, "CustomColumnByDatabase", new Task<DataTable>(() =>
{
string customColumKey = model.GridCustomColumnKey;
return gridEx.GridView.GetCustomColumnByDatabase(customColumKey);
}));
Task<DataTable> baseGridRightMenusTask = cachesDic.AddTask(gridEx, "BaseGridRightMenus", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetBaseGridRightMenus(model.FormKey);
}));
Task<DataTable> baseGridRowColorsTask = cachesDic.AddTask(gridEx, "BaseGridRowColors", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetBaseGridRowColors(model.FormKey);
}));
// 加载配置查询条件
if (dynamicModel != null && dynamicModel.IsDetailSearch)
{
Task<DataTable> customQueryFieldsTask = cachesDic.AddTask(gridEx, "CustomQueryFields", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetCustomQueryFields(model.FormKey);
}));
}
PageControlsDic.Add(model, gridEx);
}
else if (isMeage.Count() > 1 && isGridmerge)
{
DetaiName = model.DetailName;
TabMultipledetails tabMultipledetails = new TabMultipledetails();
PageControlsDic.Add(model, tabMultipledetails);
//tabMultipledetails.InitTabPages(isMeage);
}
else
{
ModuleGridEx gridEx = new ModuleGridEx();
Task<DynamicModel> gridExDynamicModelTask = cachesDic.AddTask(gridEx, "DynamicModel", new Task<DynamicModel>(() =>
{
DynamicModuleModel dyncModel = new DynamicModuleModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, dynamicModel.Privilege, model.UnionModule, "0" });
dyncModel.DataCaches = cachesDic;
return dyncModel;
}));
Task<DataRow> gridExSystemDllRowTask = cachesDic.AddTask(gridEx, "SystemDllRow", new Task<DataRow>(() =>
{
return MainImpl.GetSystemdllTab(model.UnionModule);
}));
Task<ModuleModel> gridExSystemModelTask = cachesDic.AddTask(gridEx, "SysModel", new Task<ModuleModel>(() =>
{
return new ModuleModel(gridExSystemDllRowTask.Result);
}));
if (dynamicModel != null)
{
Task<string> basePrimaryKeyTask = cachesDic.AddTask(gridEx, "ParentPrimaryKey", new Task<string>(() =>
{
string basePrimaryKey = BaseImpl.GetBasePrimaryKey(dynamicModel.ModuleCode);
return basePrimaryKey;
}));
}
Task<DataTable> baseGridRightMenusTask = cachesDic.AddTask(gridEx, "UnionBaseGridRightMenus", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn);
}));
gridEx.GetDataCaches(cachesDic);
if (model.AutoRefresh && !_UnRefresh && isGridmerge)
{
//gridEx.SearchObj.SearchGrid();
}
PageControlsDic.Add(model, gridEx);
}
}
}
}
/// <summary>
/// 页签大小改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnPageSizeChanged(object sender, EventArgs e)
{
XtraTabPage tabPage = (XtraTabPage)sender;
if (tabPage.Tag is FrmWebBrowser)
{
// 加载网页
FrmWebBrowser webView = tabPage.Tag as FrmWebBrowser;
}
else if (tabPage.Tag is FrmWebBrowser2)
{
// 加载网页
FrmWebBrowser2 webView = tabPage.Tag as FrmWebBrowser2;
}
}
/// <summary>
/// <para>说明:特殊情况绑定选项卡</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-04-04 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="gridDetail">The grid detail.</param>
/// <param name="parentValue">The parent value.</param>
public void InitTabPages(List<GridDetailModel> gridDetail, string parentValue)
{
this._gridDetail = gridDetail;
this.xtc_container.TabPages.Clear();
bool ProcessExists = (Lskj.Data.Caches.CacheSYSConfig.Instance().JudgeProcessExists() && SystemInfo.Instance.isExecload);
foreach (GridDetailModel model in this._gridDetail)
{
XtraTabPage page = new XtraTabPage();
page.Text = model.DetailName;
if (model.IsChart)
{
ChartControlEx chartEx = new ChartControlEx();
chartEx.Dock = DockStyle.Fill;
if (ProcessExists)
{
chartEx.SetCharts(Lskj.Data.Caches.CacheSYSConfig.Instance().GetCustomQueryFields());
chartEx.SetChartRightMenus(Lskj.Data.Caches.CacheSYSConfig.Instance().GetBaseGridRightMenus(), this.Model, OnGridViewRightCallBack);
}
else
{
chartEx.SetCharts(BaseModuleImpl.GetChartParams(model.FormKey));
chartEx.SetChartRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack);
}
chartEx.Tag = model;
page.Tag = chartEx;
page.Controls.Add(chartEx);
}
else if (model.IsExcel)
{
ExcelControlEx excelEx = new ExcelControlEx();
excelEx.Dock = DockStyle.Fill;
excelEx.Tag = model;
page.Tag = excelEx;
page.Controls.Add(excelEx);
}
else
{
if (model.IsReadOnly)
{
PanelControl plTop = new PanelControl();
plTop.Dock = DockStyle.Top;
PanelControl plMain = new PanelControl();
plMain.Dock = DockStyle.Fill;
GridControlEx gridEx = new GridControlEx();
gridEx.Dock = DockStyle.Fill;
gridEx.Tag = model;
gridEx.Parent = plMain;
gridEx.Model = this.Model;
gridEx.SetReadOnlyColumns(model.GridColumns, model.GridCustomColumnKey);
if (ProcessExists)
{
gridEx.SetGridRightMenus(Lskj.Data.Caches.CacheSYSConfig.Instance().GetBaseGridRightMenus(), this.Model, OnGridViewRightCallBack);
gridEx.SetGridRowColors(Lskj.Data.Caches.CacheSYSConfig.Instance().GetCustomColumnByDatabase());
}
else
{
gridEx.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(model.FormKey), this.Model, OnGridViewRightCallBack);
gridEx.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(model.FormKey));
}
// 加载配置查询条件
if (model.IsSearch)
{
MyControl searchObj = new MyControl(model.DetailSql, gridEx);
if (!string.IsNullOrEmpty(model.UnionValue) && !string.IsNullOrEmpty(parentValue))
searchObj.WhereCond = string.Format(" and {0}='{1}'", model.UnionValue, parentValue);
plTop.Height = searchObj.InitSearchControl(BaseModuleImpl.GetCustomQueryFields(model.SystemModel.CondKey), plTop);
}
page.Tag = gridEx;
page.Controls.AddRange(new PanelControl[] { plTop, plMain });
}
else
{
DynamicModel dyncModel = new DynamicModel(new string[] { model.DetailName, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.Model.Privilege, model.UnionModule, "0" });
dyncModel.Params = Model.OtherParams();
//if (ProcessExists)
//{
// model.SystemModel = new ModuleModel(Lskj.Data.Caches.CacheSYSConfig.Instance().GetSystemdllTab());
//}
//else
//{
// model.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(model.UnionModule));
//}
DataRow moduleInformation = ProcessExists ? Lskj.Data.Caches.CacheSYSConfig.Instance().GetSystemdllTab() : MainImpl.GetSystemdllTab(model.UnionModule);
if (moduleInformation == null)
{
MessageUtil.Show("没有找到编号为" + model.UnionModule + "的模块信息");
return;
}
model.SystemModel = new ModuleModel(moduleInformation);
ModuleGridEx gridEx = new ModuleGridEx();
gridEx.Name = "gridEx";
gridEx.Dock = DockStyle.Fill;
gridEx.OperShortMode = false; // 不显示简短模式
gridEx.VisibleSearchPanel = model.IsSearch;
gridEx.VisibleOperPanel = true;
gridEx.ParentGridEx = this.ParentGridEx;
gridEx.ParentControlEx = this.ParentControlEx;
gridEx.ParentKeyField = string.IsNullOrEmpty(model.UnionParentField) ? model.UnionValue : model.UnionParentField;
gridEx.ParentKeyValue = parentValue;
gridEx.DetailKeyField = model.UnionValue;
gridEx.UnionKey = model.UnionValue;
gridEx.UnionValue = parentValue; //Model.ObjectId;
gridEx.InitializeControl(model.SystemModel, dyncModel);
gridEx.GridControlObj.Tag = model;
gridEx.ControlSql = ControlSql;
gridEx.GridControlObj.ParentControl = gridEx.SearchObj;
if (model.AutoRefresh)
gridEx.SearchObj.SearchGrid();
page.Tag = gridEx.GridControlObj;
page.Controls.Add(gridEx);
}
}
this.xtc_container.TabPages.Add(page);
}
}
/// <summary>
/// <para>说明:加载tab标签里得明细数据</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();
XtraTabPage tabPage = this.xtc_container.SelectedTabPage;
foreach (System.Windows.Forms.Control control in tabPage.Controls)
{
if (control is SplitContainer)
{
SplitContainer splitContainer = control as SplitContainer;
ModuleGridEx gcMain = splitContainer.Panel1.Tag as ModuleGridEx;
TabAddControl tabadd = splitContainer.Panel2.Tag as TabAddControl;
GridDetailModel model = tabadd.gridEx.Tag as GridDetailModel;
GridDetailModel model2 = tabadd.gridEx2.GridControlObj.Tag as GridDetailModel;
DataRow rowItem = gcMain.GridControlObj.GridView.GetFocusedDataRow();
this.ModuleGridObj = gcMain;
tabadd.PrimaryKey = this.ModuleGridObj.ParmaryKey;
if (rowItem != null && model != null)
{
string searchSql = this.GetSearchSql(model, rowItem);
tabadd.gridEx.LastSearchSql = searchSql;
tabadd.gridEx.SetGridViewDataSource(MainImpl.GetDataTableResult(tabadd.gridEx.LastSearchSql));
string searchSql2 = this.GetSearchSql(model2, rowItem);
tabadd.gridEx2.GridControlObj.LastSearchSql = searchSql2;
tabadd.gridEx2.SearchObj.SearchLastGrid();
}
}
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteError(ex);
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.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 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>创建日期:2019-12-19 </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));
}
return details;
}
/// <summary>
/// <para>说明:获取TabPage绑定的实体对象</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-02-24 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="tabPage">The tab page.</param>
/// <returns>GridDetailModel.</returns>
public GridDetailModel GetGridDetailModel(XtraTabPage tabPage)
{
if (tabPage == null) return null;
if (tabPage.Tag is GridControlEx)
return (tabPage.Tag as GridControlEx).Tag as GridDetailModel;
if (tabPage.Tag is ChartControlEx)
return (tabPage.Tag as ChartControlEx).Tag as GridDetailModel;
if (tabPage.Tag is ModuleWebView)
return (tabPage.Tag as ModuleWebView).Tag as GridDetailModel;
if (tabPage.Tag is FrmWebBrowser)
return (tabPage.Tag as FrmWebBrowser).Tag as GridDetailModel;
if (tabPage.Tag is FrmWebBrowser2)
return (tabPage.Tag as FrmWebBrowser2).Tag as GridDetailModel;
if (tabPage.Tag is FrmMiniBlink)
return (tabPage.Tag as FrmMiniBlink).Tag as GridDetailModel;
if (tabPage.Tag is TabMultipledetails)
return (tabPage.Tag as TabMultipledetails).Tag as GridDetailModel;
return null;
}
/// <summary>
/// <para>说明:获取选中TabPage绑定的实体对象</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-02-24 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <returns>GridDetailModel.</returns>
public GridDetailModel GetFocusTabPageGridDetailModel()
{
return this.GetGridDetailModel(this.xtc_container.SelectedTabPage);
}
/// <summary>
/// <para>说明:设置指定TabPage数据源</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-01-15 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="tabPage">The tab page.</param>
/// <param name="rowItem">The row item.</param>
public void SetGridDataSource(XtraTabPage tabPage, DataTable table, GridView view = null)
{
try
{
if (tabPage == null) return;
if (tabPage.Tag is GridControlEx)
{
this.SetGridViewTabPage(tabPage, table);
}
else if (tabPage.Tag is ChartControlEx)
{
this.SetChartViewTabPage(tabPage, table, view);
}
else if (tabPage.Tag is TabMultipledetails)
{
this.SetTabMultipledetailsTabPage(tabPage, table);
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
LogHelper.Instance.WriteError(ex);
}
}
public void SetGridDataSource(XtraTabPage tabPage, string sqlValue, GridView view = null)
{
try
{
if (tabPage == null) return;
DataTable table = MainImpl.GetDataTableResult(sqlValue);
if (tabPage.Tag is GridControlEx)
{
this.SetGridViewTabPage(tabPage, table);
}
else if (tabPage.Tag is ChartControlEx)
{
this.SetChartViewTabPage(tabPage, table, view);
}
else if (tabPage.Tag is FrmWebBrowser)
{
this.SetWebUrlTabPage(tabPage, sqlValue);
}
else if (tabPage.Tag is FrmWebBrowser2)
{
this.SetWebUrlTabPage2(tabPage, sqlValue);
}
else if (tabPage.Tag is FrmMiniBlink)
{
this.SetMiniBlinkWebUrlTabPage(tabPage, sqlValue);
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
LogHelper.Instance.WriteError(ex);
}
}
/// <summary>
/// <para>说明:设置选中TabPage数据源</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-02-24 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="table">The table.</param>
public void SetGridDataSource(DataTable table)
{
this.SetGridDataSource(this.xtc_container.SelectedTabPage, table);
}
/// <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 SetGridViewTabPage(XtraTabPage tabPage, DataTable table)
{
GridControlEx gridControl = tabPage.Tag as GridControlEx;
GridDetailModel model = gridControl.Tag as GridDetailModel;
int dataRowCount = 0;
gridControl.GridView.DoubleClick -= new EventHandler(OnGridCompleted);
if (gridControl is TreeGridControlEx)
{
TreeGridControlEx treeGridControlEx = gridControl as TreeGridControlEx;
treeGridControlEx.SetGridViewDataSource(table, false);
dataRowCount = (treeGridControlEx.TreeListObj.DataSource as DataTable).Rows.Count;
//treeGridControlEx.TreeListObj.ExpandAll();
}
else
{
gridControl.SetGridViewDataSource(table);
dataRowCount = gridControl.GridView.DataRowCount;
}
if (IsDragDetail && this.ParentGridEx != null && model.IsDrag)
{
gridControl.GridView.DoubleClick += new EventHandler(OnGridCompleted);
}
tabPage.Text = gridControl.CustomGroupBandEx != null ? model.DetailName + "(" + gridControl.CustomGroupBandEx.DataRowCount() + "条)" : model.DetailName + "(" + dataRowCount + ")";
tabPage.Appearance.Header.ForeColor = dataRowCount > 0 ? Color.Red : Color.FromArgb(0, 0, 0);
}
/// <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 SetTabMultipledetailsTabPage(XtraTabPage tabPage, DataTable table)
{
TabMultipledetails tabMultipledetails = tabPage.Tag as TabMultipledetails;
GridControlEx grdExMain = (tabMultipledetails.SplitMain.Panel1.Tag as GridControlEx);
GridDetailModel MainModel = grdExMain.Tag as GridDetailModel;
grdExMain.SetGridViewDataSource(table);
GridControlEx grdExAdditional = (tabMultipledetails.SplitMain.Panel2.Tag as GridControlEx);
grdExAdditional.SetGridViewDataSource(table);
tabPage.Text = MainModel.DetailName + "(" + table.Rows.Count + ")";
tabPage.Appearance.Header.ForeColor = table.Rows.Count > 0 ? Color.Red : Color.FromArgb(0, 0, 0);
}
/// <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="chartControl">The chart control.</param>
protected void SetChartViewTabPage(XtraTabPage tabPage, DataTable table, GridView view = null)
{
ChartControlEx chartEx = tabPage.Tag as ChartControlEx;
GridDetailModel model = chartEx.Tag as GridDetailModel;
chartEx.CreateChart(table, view);
}
/// <summary>
/// <para>说明:设置网页Url</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="chartControl">The chart control.</param>
protected void SetWebUrlTabPage(XtraTabPage tabPage, string Url)
{
FrmWebBrowser webBrowser = tabPage.Tag as FrmWebBrowser;
webBrowser.LoadUrl(Url);
}
protected void SetWebUrlTabPage2(XtraTabPage tabPage, string Url)
{
FrmWebBrowser2 webBrowser = tabPage.Tag as FrmWebBrowser2;
webBrowser.LoadUrl(Url);
}
protected void SetMiniBlinkWebUrlTabPage(XtraTabPage tabPage, string Url)
{
FrmMiniBlink webBrowser = tabPage.Tag as FrmMiniBlink;
webBrowser.LoadUrl(Url);
}
/// <summary>
/// <para>说明:</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-02-24 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
protected void OnGridViewRightCallBack(object sender, EventArgs e)
{
try
{
if (this.OnRightCallback != null)
this.OnRightCallback(sender, e);
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// <para>说明:表格双击完成</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2019-08-29 </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 OnGridCompleted(object sender, EventArgs e)
{
try
{
XtraTabPage tabPage = this.xtc_container.SelectedTabPage;
GridControlEx ge = tabPage.Tag as GridControlEx;
DataRow[] rowItems = new DataRow[] { ge.GridView.GetFocusedDataRow() };
GridColumnCollection gridColumns = this.ParentGridEx.GridView.Columns;
DataTable table = this.ParentGridEx.gridControl.DataSource as DataTable;
foreach (DataRow rowItem in rowItems)
{
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-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 (OnDragCompleteCallback != null)
{
OnDragCompleteCallback(sender, e);
}
else
{
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-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 OnMrpDragGridCompleted(object sender, GridDragGridArgs e)
{
if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0 || this.MrpParentGridEx == null) return;
try
{
if (MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
GridColumnCollection gridColumns = e.TargetGridViewObj.Columns;
DataTable table = e.TargetGridViewObj.GridControl.DataSource as DataTable;
ModuleModel mrpMainModule = e.SourceGridViewObj.Tag as ModuleModel;
GridControlEx gridControlEx = e.TargetGridViewObj.GridControl.Parent.Parent as GridControlEx;
GridDetailModel gridDetailModel = gridControlEx.Tag as GridDetailModel;
//if (table == null)
//{
// gridControlEx.ParentControl.SearchGrid();
// table = e.TargetGridViewObj.GridControl.DataSource as DataTable;
//}
// 验证删除存储过程
string tipMsg = string.Empty;
int[] records = new int[e.GridViewSelectRows.Length];
string ParmaryKey = mrpMainModule.ParmaryKey;
for (int i = 0; i < e.GridViewSelectRows.Length; i++)
{
DataRow item = e.GridViewSelectRows[i];
try
{
string outMsg = "";
records[i] = BaseImpl.getMrpPlanAdd(mrpMainModule.ModeCode, item[ParmaryKey] + "", out outMsg);
tipMsg += outMsg;
}
catch (Exception ex)
{
LogHelper.Instance.WriteError(ex);
//MessageUtil.Show("表格拖拽出错!" + ex);
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
//int successCount = records.Contains(1) ? records.Where(x => x == 1).Count() : 0;
//int faultCount = records.Contains(0) ? records.Where(x => x == 0).Count() : 0;
//string Msg = string.Empty;
//string filepath = string.Empty;
//string paramstr = string.Empty;
//if (successCount > 0) Msg = string.Format(ResourceKeys.DragSuccessCount, successCount);
//if (faultCount > 0) Msg += successCount > 0 ? "\r\n" : "" + string.Format(ResourceKeys.DragFaultCount, faultCount);
//Msg = string.IsNullOrWhiteSpace(Msg) ? tipMsg : Msg;
if (!string.IsNullOrWhiteSpace(tipMsg))
{
MessageUtil.Show(tipMsg);
}
if (this.OnMrpDragCallback != null)
{
OnMrpDragCallback(gridControlEx, null);
}
if (table == null) table = e.TargetGridViewObj.GridControl.DataSource as DataTable;
if (table != null)
{
e.TargetGridViewObj.ClearSelection();
e.TargetGridViewObj.SelectRowHandler(table.Rows.Count - 1);
e.TargetGridViewObj.UpdateCurrentRow();
e.TargetGridViewObj.ShowEditor();
}
//gridControlEx.ParentControl.SearchGrid();
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
LogHelper.Instance.WriteError(ex);
// MessageUtil.Show(ResourceKeys.OperFault);
}
}
/// <summary>
/// 设置动态列
/// </summary>
/// <param name="tabPage"></param>
/// <param name="ColumnName"></param>
public void SetGridDisplayColumns(XtraTabPage tabPage, string ColumnName)
{
try
{
if (tabPage == null) return;
if (tabPage.Tag is GridControlEx)
{
GridControlEx gridControl = tabPage.Tag as GridControlEx;
gridControl.SetDisplayColumns(ColumnName);
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
LogHelper.Instance.WriteError(ex);
}
}
/// <summary>
/// 拖拽模式DetailView明细表双击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnDetailGridViewDoubleClick(object sender, EventArgs e)
{
if (OnDetailViewDoubleClickCallBack != null)
{
OnDetailViewDoubleClickCallBack("Detail", null);
}
}
/// <summary>
/// 提示保存所有页签中有修改的数据
/// </summary>
public bool CheckIfSaved()
{
try
{
foreach (XtraTabPage tabPage in this.TabControlObj.TabPages)
{
if (tabPage.Tag is GridControlEx && (tabPage.Tag as GridControlEx).IsDataNotSaved())
{
GridDetailModel model = this.GetGridDetailModel(tabPage);
DialogResult dialog = MessageUtil.Show(string.Format("{0}有数据未保存,是否保存", model.DetailName), MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes)
{
Object moduleObject = tabPage.Controls.Cast<Object>().FirstOrDefault();
if (moduleObject is ModuleGridEx)