SVN-Revision: r418
This commit is contained in:
tdx
2025-03-27 07:53:25 +00:00
parent 8303017811
commit 94bb881ae6
+40 -121
View File
@@ -137,7 +137,7 @@ namespace Lskj.Control
/// <summary>
/// 页签控件集合
/// </summary>
public Dictionary<GridDetailModel, Task<object>> PageControlsDic = new Dictionary<GridDetailModel, Task<object>>();
public Dictionary<GridDetailModel, object> PageControlsDic = new Dictionary<GridDetailModel, object>();
public TabControlEx()
{
InitializeComponent();
@@ -161,14 +161,12 @@ namespace Lskj.Control
}
string DetaiName = string.Empty;
Dictionary<object, Hashtable> dataCaches = Model != null ? Model.DataCaches : null;
dataCaches.GetValue(this, "DataCaches", out bool _);//等待缓存数据加载完成
foreach (GridDetailModel model in this._gridDetail)
{
Task<object> controlTask = PageControlsDic.ContainsKey(model) ? PageControlsDic[model] : null;
bool hasControl = controlTask != null && controlTask.Result != null;
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();
@@ -184,7 +182,7 @@ namespace Lskj.Control
if (model.IsChart)
{
ChartControlEx chartEx = new ChartControlEx();
ChartControlEx chartEx = hasControl && control is ChartControlEx ? (ChartControlEx)control : new ChartControlEx();
chartEx.Dock = DockStyle.Fill;
chartEx.transverseHistogram = model.transverseHistogram;
//chartEx.SetCharts(BaseModuleImpl.GetChartParams(model.FormKey));
@@ -205,7 +203,7 @@ namespace Lskj.Control
}
else if (model.IsExcel)
{
ExcelControlEx excelEx = new ExcelControlEx();
ExcelControlEx excelEx = hasControl && control is ExcelControlEx ? (ExcelControlEx)control : new ExcelControlEx();
excelEx.Dock = DockStyle.Fill;
excelEx.Tag = model;
page.Tag = excelEx;
@@ -218,7 +216,7 @@ namespace Lskj.Control
//url= System.Web.HttpUtility.UrlEncode(url);
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = new FrmMiniBlink();
FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink();
webView.IsDownVerify = true;
webView.Dock = DockStyle.Fill;
webView.Tag = model;
@@ -228,7 +226,7 @@ namespace Lskj.Control
}
else
{
FrmWebBrowser webView = new FrmWebBrowser();
FrmWebBrowser webView = hasControl && control is FrmWebBrowser ? (FrmWebBrowser)control : new FrmWebBrowser();
webView.Dock = DockStyle.Fill;
webView.Tag = model;
page.Tag = webView;
@@ -243,7 +241,7 @@ namespace Lskj.Control
//url= System.Web.HttpUtility.UrlEncode(url);
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = new FrmMiniBlink();
FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink();
webView.Dock = DockStyle.Fill;
webView.Tag = model;
page.Tag = webView;
@@ -252,7 +250,7 @@ namespace Lskj.Control
}
else
{
FrmWebBrowser2 webView = new FrmWebBrowser2();
FrmWebBrowser2 webView = hasControl && control is FrmWebBrowser2 ? (FrmWebBrowser2)control : new FrmWebBrowser2();
webView.Dock = DockStyle.Fill;
webView.Tag = model;
page.Tag = webView;
@@ -267,7 +265,7 @@ namespace Lskj.Control
//url= System.Web.HttpUtility.UrlEncode(url);
if (SystemInfo.Instance.PrimitiveBrowser)
{
FrmMiniBlink webView = new FrmMiniBlink();
FrmMiniBlink webView = hasControl && control is FrmMiniBlink ? (FrmMiniBlink)control : new FrmMiniBlink();
webView.AllowDownload = false;
webView.Dock = DockStyle.Fill;
webView.Tag = model;
@@ -277,7 +275,7 @@ namespace Lskj.Control
}
else
{
FrmWebBrowser2 webView = new FrmWebBrowser2();
FrmWebBrowser2 webView = hasControl && control is FrmWebBrowser2 ? (FrmWebBrowser2)control : new FrmWebBrowser2();
webView.Dock = DockStyle.Fill;
webView.Tag = model;
webView.AllowDownload = false;
@@ -289,7 +287,7 @@ namespace Lskj.Control
else if (model.IsAddPanel && isGridmerge)
{
// 加载添加界面
ModulePanelEx modulePanel = new ModulePanelEx();
ModulePanelEx modulePanel = hasControl && control is ModulePanelEx ? (ModulePanelEx)control : new ModulePanelEx();
modulePanel.Dock = DockStyle.Fill;
if (!dataCaches.GetValue(modulePanel, "BasePrimaryKey", out string primaryKey))
@@ -312,7 +310,7 @@ namespace Lskj.Control
}
else if (model.IsDetailView)
{
ModuleGridDetailEx DetailEx = new ModuleGridDetailEx();
ModuleGridDetailEx DetailEx = hasControl && control is ModuleGridDetailEx ? (ModuleGridDetailEx)control : new ModuleGridDetailEx();
DetailEx.Dock = DockStyle.Fill;
if (!dataCaches.GetValue(DetailEx, "DynamicModel", out DynamicModel dyncModel))
{
@@ -322,7 +320,6 @@ namespace Lskj.Control
{
moduleInformation = MainImpl.GetSystemdllTab(model.UnionModule);
}
if (moduleInformation == null)
{
MessageUtil.Show("没有找到编号为" + model.UnionModule + "的模块信息");
@@ -385,7 +382,15 @@ namespace Lskj.Control
plBottom.Visible = false;
PanelControl plMain = new PanelControl();
plMain.Dock = DockStyle.Fill;
GridControlEx gridEx = model.AutoMultiHeader == 1 ? new BandedGridControlEx() : new GridControlEx();
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;
@@ -449,7 +454,7 @@ namespace Lskj.Control
else if (isMeage.Count() > 1 && isGridmerge)
{
DetaiName = model.DetailName;
TabMultipledetails tabMultipledetails = new TabMultipledetails();
TabMultipledetails tabMultipledetails = hasControl && control is TabMultipledetails ? (TabMultipledetails)control : new TabMultipledetails();
tabMultipledetails.Model = this.Model;
tabMultipledetails.ParentGridEx = this.ParentGridEx;
tabMultipledetails.ParentControlEx = this.ParentControlEx;
@@ -464,7 +469,7 @@ namespace Lskj.Control
}
else
{
ModuleGridEx gridEx = hasControl && controlTask.Result is ModuleGridEx ? (ModuleGridEx)controlTask.Result : new ModuleGridEx();
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" });
@@ -591,8 +596,6 @@ namespace Lskj.Control
//获取通用数据
Task<DynamicModel> dynamicModelTask = cachesDic.GetTask<DynamicModel>(this, "DynamicModel");
Task<List<GridDetailModel>> detailsTask = cachesDic.GetTask<List<GridDetailModel>>(this, "Details");
Task<bool> getDataCachesTask = cachesDic.AddTask(this, "DataCaches", new Task<bool>(() =>
{
DynamicModel dynamicModel = dynamicModelTask.Result;
List<GridDetailModel> details = detailsTask.Result;
string DetaiName = string.Empty;
@@ -605,8 +608,6 @@ namespace Lskj.Control
}
List<GridDetailModel> isMeage = details.Cast<GridDetailModel>().Where(x => x.DetailName.Equals(model.DetailName)).ToList();
if (model.IsChart)
{
Task<object> chartControlExTask = cachesDic.AddTask(model, "ChartControlEx", new Task<object>(() =>
{
ChartControlEx chartEx = new ChartControlEx();
Task<DataTable> chartParamsTask = cachesDic.AddTask(chartEx, "ChartParams", new Task<DataTable>(() =>
@@ -617,85 +618,53 @@ namespace Lskj.Control
{
return BaseModuleImpl.GetBaseGridRightMenus(model.FormKey);
}));
return chartEx;
}));
PageControlsDic.Add(model, chartControlExTask);
PageControlsDic.Add(model, chartEx);
}
else if (model.IsExcel)
{
Task<object> excelControlExTask = cachesDic.AddTask(model, "ExcelControlEx", new Task<object>(() =>
{
ExcelControlEx excelEx = new ExcelControlEx();
return excelEx;
}));
PageControlsDic.Add(model, excelControlExTask);
PageControlsDic.Add(model, excelEx);
}
else if (model.IsWebView)
{
if (SystemInfo.Instance.PrimitiveBrowser)
{
Task<object> frmMiniBlinkTask = cachesDic.AddTask(model, "FrmMiniBlink", new Task<object>(() =>
{
FrmMiniBlink webView = new FrmMiniBlink();
return webView;
}));
PageControlsDic.Add(model, frmMiniBlinkTask);
PageControlsDic.Add(model, webView);
}
else
{
Task<object> frmWebBrowserTask = cachesDic.AddTask(model, "FrmWebBrowser", new Task<object>(() =>
{
FrmWebBrowser webView = new FrmWebBrowser();
return webView;
}));
PageControlsDic.Add(model, frmWebBrowserTask);
PageControlsDic.Add(model, webView);
}
}
else if (model.IsWebView2)
{
if (SystemInfo.Instance.PrimitiveBrowser)
{
Task<object> frmMiniBlinkTask = cachesDic.AddTask(model, "FrmMiniBlink", new Task<object>(() =>
{
FrmMiniBlink webView = new FrmMiniBlink();
return webView;
}));
PageControlsDic.Add(model, frmMiniBlinkTask);
PageControlsDic.Add(model, webView);
}
else
{
Task<object> frmWebBrowser2Task = cachesDic.AddTask(model, "FrmWebBrowser2", new Task<object>(() =>
{
FrmWebBrowser2 webView = new FrmWebBrowser2();
return webView;
}));
PageControlsDic.Add(model, frmWebBrowser2Task);
PageControlsDic.Add(model, webView);
}
}
else if (model.IsWebView3)
{
if (SystemInfo.Instance.PrimitiveBrowser)
{
Task<object> frmMiniBlinkTask = cachesDic.AddTask(model, "FrmMiniBlink", new Task<object>(() =>
{
FrmMiniBlink webView = new FrmMiniBlink();
return webView;
}));
PageControlsDic.Add(model, frmMiniBlinkTask);
PageControlsDic.Add(model, webView);
}
else
{
Task<object> frmWebBrowser2Task = cachesDic.AddTask(model, "FrmWebBrowser2", new Task<object>(() =>
{
FrmWebBrowser2 webView = new FrmWebBrowser2();
return webView;
}));
PageControlsDic.Add(model, frmWebBrowser2Task);
PageControlsDic.Add(model, webView);
}
}
else if (model.IsAddPanel && isGridmerge)
{
Task<object> modulePanelExTask = cachesDic.AddTask(model, "ModulePanelEx", new Task<object>(() =>
{
ModulePanelEx modulePanel = new ModulePanelEx();
Task<string> basePrimaryKeyTask = cachesDic.AddTask(modulePanel, "BasePrimaryKey", new Task<string>(() =>
@@ -707,13 +676,9 @@ namespace Lskj.Control
return MainImpl.GetSystemdllTab(dynamicModel.ModuleCode);
}));
modulePanel.GetDataCaches(cachesDic, new ModuleModel(systemdllTabTask.Result), dynamicModel);
return modulePanel;
}));
PageControlsDic.Add(model, modulePanelExTask);
PageControlsDic.Add(model, modulePanel);
}
else if (model.IsDetailView)
{
Task<object> moduleGridDetailExTask = cachesDic.AddTask(model, "ModuleGridDetailEx", new Task<object>(() =>
{
ModuleGridDetailEx DetailEx = new ModuleGridDetailEx();
Task<DynamicModel> detailViewDynamicModelTask = cachesDic.AddTask(DetailEx, "DynamicModel", new Task<DynamicModel>(() =>
@@ -732,7 +697,7 @@ namespace Lskj.Control
}));
if (detailViewSystemDllRowTask.Result == null)
{
return DetailEx;
return;
}
Task<ModuleModel> detailViewSystemModelTask = cachesDic.AddTask(DetailEx, "SysModel", new Task<ModuleModel>(() =>
{
@@ -747,15 +712,11 @@ namespace Lskj.Control
return BaseModuleImpl.GetBaseGridRightMenus(model.UnionModule, ModuleType.MrpClickBtn);
}));
DetailEx.GetDataCaches(cachesDic);
return DetailEx;
}));
PageControlsDic.Add(model, moduleGridDetailExTask);
PageControlsDic.Add(model, DetailEx);
}
else
{
if (model.IsReadOnly && isMeage.Count() == 1)
{
Task<object> gridControlExTask = cachesDic.AddTask(model, "GridControlEx", new Task<object>(() =>
{
GridControlEx gridEx = model.AutoMultiHeader == 1 ? new BandedGridControlEx() : new GridControlEx();
Task<bool> hasExistsSettingTableTask = cachesDic.AddTask(gridEx, "HasExistsSettingTable", new Task<bool>(() =>
@@ -787,24 +748,16 @@ namespace Lskj.Control
return BaseModuleImpl.GetCustomQueryFields(model.FormKey);
}));
}
return gridEx;
}));
PageControlsDic.Add(model, gridControlExTask);
PageControlsDic.Add(model, gridEx);
}
else if (isMeage.Count() > 1 && isGridmerge)
{
DetaiName = model.DetailName;
Task<object> tabMultipledetailsTask = cachesDic.AddTask(model, "TabMultipledetails", new Task<object>(() =>
{
TabMultipledetails tabMultipledetails = new TabMultipledetails();
return tabMultipledetails;
}));
PageControlsDic.Add(model, tabMultipledetailsTask);
PageControlsDic.Add(model, tabMultipledetails);
//tabMultipledetails.InitTabPages(isMeage);
}
else
{
Task<object> moduleGridExTask = cachesDic.AddTask(model, "ModuleGridEx", new Task<object>(() =>
{
ModuleGridEx gridEx = new ModuleGridEx();
Task<DynamicModel> gridExDynamicModelTask = cachesDic.AddTask(gridEx, "DynamicModel", new Task<DynamicModel>(() =>
@@ -838,17 +791,12 @@ namespace Lskj.Control
{
//gridEx.SearchObj.SearchGrid();
}
return gridEx;
}));
PageControlsDic.Add(model, moduleGridExTask);
PageControlsDic.Add(model, gridEx);
}
}
}
return true;
}));
}
/// <summary>
/// 页签大小改变时
/// </summary>
@@ -1278,7 +1226,7 @@ namespace Lskj.Control
{
gridControl.GridView.DoubleClick += new EventHandler(OnGridCompleted);
}
tabPage.Text = model.DetailName + "(" + dataRowCount + ")";
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);
}
@@ -1644,33 +1592,4 @@ namespace Lskj.Control
{
Object moduleObject = tabPage.Controls.Cast<Object>().FirstOrDefault();
if (moduleObject is ModuleGridEx)
{
ModuleGridEx moduleGridEx = moduleObject as ModuleGridEx;
bool SaveResults = moduleGridEx.SaveWhenSwitching();
if (!SaveResults) return false;
}
}
}
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
LogHelper.Instance.WriteError(ex);
return false;
}
return true;
}
/// <summary>
/// 控件注销时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnTabControlExDisposed(object sender, EventArgs e)
{
PageControlsDic?.Clear();
DetailTabPagesDic?.Clear();
}
}
}