From 16c8b9e19f144678872700e7297d80cdd05abdb2 Mon Sep 17 00:00:00 2001 From: tdx Date: Wed, 9 Jul 2025 02:34:54 +0000 Subject: [PATCH] SVN r847 SVN-Revision: r847 --- .../FrmProductSched.Designer.cs | 6 +- 插件库/Lskj.ProductSched/FrmProductSched.cs | 76 +++++++++++++++++-- 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/插件库/Lskj.ProductSched/FrmProductSched.Designer.cs b/插件库/Lskj.ProductSched/FrmProductSched.Designer.cs index 9a593cc..851c140 100644 --- a/插件库/Lskj.ProductSched/FrmProductSched.Designer.cs +++ b/插件库/Lskj.ProductSched/FrmProductSched.Designer.cs @@ -39,7 +39,7 @@ namespace Lskj.ProductiSched this.pl_search = new DevExpress.XtraEditors.PanelControl(); this.flowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); this.btnSave = new DevExpress.XtraEditors.SimpleButton(); - this.gcRight = new Lskj.Control.GridControlEx(); + this.gcRight = new Lskj.Control.ModuleGridEx(); this.tabBottom = new Lskj.Control.TabControlEx(); ((System.ComponentModel.ISupportInitialize)(this.pl_main)).BeginInit(); this.pl_main.SuspendLayout(); @@ -184,12 +184,10 @@ namespace Lskj.ProductiSched // // gcRight // - this.gcRight.AdapterObj = null; this.gcRight.Dock = System.Windows.Forms.DockStyle.Fill; this.gcRight.Location = new System.Drawing.Point(0, 0); this.gcRight.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.gcRight.Name = "gcRight"; - this.gcRight.SiftEnumObj = Lskj.Control.GridControlEx.HeaderSiftEnum.Sum; this.gcRight.Size = new System.Drawing.Size(315, 679); this.gcRight.TabIndex = 11; // @@ -217,4 +215,4 @@ namespace Lskj.ProductiSched ((System.ComponentModel.ISupportInitialize)(this.pltopmain)).EndInit(); this.pltopmain.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.pl_mainSearch)).EndInit(); - this.pl_m \ No newline at end of file + this.pl_ \ No newline at end of file diff --git a/插件库/Lskj.ProductSched/FrmProductSched.cs b/插件库/Lskj.ProductSched/FrmProductSched.cs index 8c3cfe0..9e6629f 100644 --- a/插件库/Lskj.ProductSched/FrmProductSched.cs +++ b/插件库/Lskj.ProductSched/FrmProductSched.cs @@ -236,12 +236,38 @@ namespace Lskj.ProductiSched //右侧表格 if (!string.IsNullOrEmpty(DataModel.RightSysModel.ModuleCode)) { - gcRight.Model = DataModel.RightSysModel; - gcRight.SetEditColumns(DataModel.RightGridColumns, GridCustomColumnStruct.BaseMainGridView + DataModel.RightModuleModel.FormKey); - gcRight.SetGridRightMenus(BaseModuleImpl.GetBaseGridRightMenus(DataModel.RightModuleModel.ModeCode), DataModel.RightSysModel, this.OnGridViewRightCallBack); - gcRight.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(DataModel.RightModuleModel.ModeCode)); + DataRow moduleInformation = MainImpl.GetSystemdllTab(DataModel.RightSysModel.ModuleCode); + if (moduleInformation == null) + { + MessageUtil.Show("没有找到编号为" + DataModel.RightSysModel.ModuleCode + "的模块信息"); + return; + } + DataModel.RightDetailModel.SystemModel = new ModuleModel(moduleInformation); + gcRight.OnSaveGridCallBack += OnDetailSaveGridCallBack; + gcRight.Name = "gridEx"; + gcRight.IsDetail = true; + gcRight.Dock = DockStyle.Fill; + gcRight.OperShortMode =false; // 不显示简短模式 + gcRight.VisibleSearchPanel = false; + DataTable rightDt = BaseModuleImpl.GetBaseGridRightMenus(DataModel.RightSysModel.ModuleCode, ModuleType.MrpClickBtn); + gcRight.VisibleOperPanel = !DataModel.RightDetailModel.IsReadOnly; + gcRight.InitializeControl(DataModel.RightDetailModel.SystemModel, DataModel.RightSysModel); + gcRight.GridControlObj.Tag = DataModel.RightDetailModel; + if (DataModel.RightDetailModel.IsCheck == 1)//加载复选框 + { + GridDragGrid.GridAddCheckBox(gcRight.GridControlObj.GridView); + } } } + /// + /// 右侧表格保存回调 + /// + /// + /// + private void OnDetailSaveGridCallBack(object sender, EventArgs e) + { + DataModel.TopSearchObj.ButtonObj.PerformClick(); + } @@ -287,6 +313,35 @@ namespace Lskj.ProductiSched } btnSave.Click += OnBtnSaveClick; } + + /// + /// 判断单元格是否可以编辑 + /// + /// + /// + private void OnRightShowingEditor(object sender, CancelEventArgs e) + { + var view = sender as GridView; + if (view == null) return; + + DataRow row = gcRight.GridControlObj.GetViewFocusedDataRow(); + if (row == null) { e.Cancel = true; return; } // 没有行也不让编辑 + + // —— 1. 解析 day 字段 —— + if (!DateTime.TryParse(row["day"]?.ToString(), out DateTime dayDate)) + { + e.Cancel = true; // 无法解析日期 → 禁止编辑 + return; + } + + // —— 2. 超过 7 天的行不可编辑 —— + if (dayDate.AddDays(7) <= DateTime.Today) + { + e.Cancel = true; + return; + } + } + /// /// 判断单元格是否可以编辑 /// @@ -708,14 +763,17 @@ namespace Lskj.ProductiSched string searchSql = this.GetSearchSql(model, rowItem, false); string isweekcond = DataModel.TopModuleModel.HasReport ? "" : $"and isWeek='{typeDate}'"; searchSql = $"{ReplaceHelper.ReplaceWhereCond(searchSql)} and day >= '{labelDateEdit.TextEdit.DateTime.ToString("yyyy-MM-dd")}' {isweekcond}"; - gcRight.SetGridViewDataSource(BaseImpl.GetDataTableResult(searchSql)); + + gcRight.GridControlObj.LastSearchSql = searchSql; + // 4) 让 Grid 用这张表,并把 adapter 存起来 + gcRight.GridControlObj.SetGridViewDataSource(BaseImpl.GetDataTableResult(searchSql)); if (e != null) { if (labelDateEdit != null) { DateTime dateTime = labelDateEdit.TextEdit.DateTime; DataRow focusedRow = bandGcTop.BandedView.GetFocusedDataRow(); - DataTable dataDayPlan = gcRight.GridControl.DataSourceTable().Copy(); + DataTable dataDayPlan = gcRight.GridControlObj.GridControl.DataSourceTable().Copy(); if (DataModel.TopModuleModel.HasReport) UpdateRowWithDayPlan(focusedRow, dataDayPlan, dateTime); } } @@ -763,11 +821,11 @@ namespace Lskj.ProductiSched string isweekcond = DataModel.TopModuleModel.HasReport ? "" : $"and isWeek='{typeDate}'"; searchSql = $"{ReplaceHelper.ReplaceWhereCond(searchSql)} and day >= '{labelDateEdit.TextEdit.DateTime:yyyy-MM-dd}' {isweekcond}"; - gcRight.SetGridViewDataSource(BaseImpl.GetDataTableResult(searchSql)); + gcRight.GridControlObj.SetGridViewDataSource(BaseImpl.GetDataTableResult(searchSql)); // 更新行数据逻辑 DateTime dateTime = labelDateEdit.TextEdit.DateTime; - DataTable dataDayPlan = gcRight.GridControl.DataSourceTable().Copy(); + DataTable dataDayPlan = gcRight.GridControlObj.GridControl.DataSourceTable().Copy(); if (DataModel.TopModuleModel.HasReport) UpdateRowWithDayPlan(rowItem, dataDayPlan, dateTime); this.SetDetailGridDataSource(rowItem); } @@ -1162,6 +1220,7 @@ namespace Lskj.ProductiSched if (isAddBottom) UpdateDynamicColumns(bandGcBottom, dateTime, typeDate); DataTable dataMain = null; DataTable dataDetail = null; + int hander = bandGcTop.BandedView.FocusedRowHandle; if (TreeMultiHeader) { dataMain = treebandGcTop.GetGridViewDataSource().Copy(); @@ -1188,6 +1247,7 @@ namespace Lskj.ProductiSched if (!TreeMultiHeader) { bandGcTop.BandedView.GridControl.DataSource = dataMain; + bandGcTop.BandedView.FocusedRowHandle = hander; OnBandedViewRowCellClick(bandGcTop.BandedView, null); bandGcTop.BandedView.LeftCoord = DataModel.MainLeftCoord; }