diff --git a/其他程序/xNewMyFormDesigner/Program.cs b/其他程序/xNewMyFormDesigner/Program.cs index a38f89d..e5bf3f7 100644 --- a/其他程序/xNewMyFormDesigner/Program.cs +++ b/其他程序/xNewMyFormDesigner/Program.cs @@ -21,14 +21,14 @@ namespace NewMyFormDesigner { MyFormDesigner myFormDesigner = new MyFormDesigner(); - //myFormDesigner.FrmKey = "{83184D92-F406-487E-9110-2CB991BFA817}";//B32C9D6E-EB85-4CE1-9B81-2B22EDF2D125 56F43621-6C15-4BDD-8870-98D235ECAB91 + //myFormDesigner.FrmKey = "{D50D2D31-2120-4AE5-9F27-6F363AB6E76C}";//B32C9D6E-EB85-4CE1-9B81-2B22EDF2D125 56F43621-6C15-4BDD-8870-98D235ECAB91 //myFormDesigner.SelectSQL = @"select b.orderid,b.id as fieldid,fieldname,username1 as username, // fieldsqltag as fieldtypeid,defaultdate as defaultValue // from p_systemDlltab a - // left join p_systemwordbooktab b on a.DllCoid=b.tab where a.formkey='{83184D92-F406-487E-9110-2CB991BFA817}' and fieldsqltag<>3 and username1 is not null and isnull(addVisible,0)=0"; + // left join p_systemwordbooktab b on a.DllCoid=b.tab where a.formkey='{D50D2D31-2120-4AE5-9F27-6F363AB6E76C}' and fieldsqltag<>3 and username1 is not null and isnull(addVisible,0)=0"; - //myFormDesigner.updateSQL = @"update p_systemwordbooktab set controlleft=b.controlleft ,controlTop=b.controlTop, controlHeight=b.controlHeight,controlWidth=b.controlWidth, tabOrder=b.tabOrder from p_systemControlLocation b where p_systemwordbooktab.formKey=b.formKey and p_systemwordbooktab.id=b.fieldId and b.formkey='{83184D92-F406-487E-9110-2CB991BFA817}'"; + //myFormDesigner.updateSQL = @"update p_systemwordbooktab set controlleft=b.controlleft ,controlTop=b.controlTop, controlHeight=b.controlHeight,controlWidth=b.controlWidth, tabOrder=b.tabOrder from p_systemControlLocation b where p_systemwordbooktab.formKey=b.formKey and p_systemwordbooktab.id=b.fieldId and b.formkey='{D50D2D31-2120-4AE5-9F27-6F363AB6E76C}'"; diff --git a/插件库/Lskj.Control/Model/ControlModel.cs b/插件库/Lskj.Control/Model/ControlModel.cs index 94f7c00..a903434 100644 --- a/插件库/Lskj.Control/Model/ControlModel.cs +++ b/插件库/Lskj.Control/Model/ControlModel.cs @@ -366,7 +366,10 @@ namespace Lskj.Control.Model ///记住上一次的值(关闭时记住上一次的条件值,下一次打开时输入上去。关闭程序后清空) /// public bool RememberValue { get; set; } - + /// + /// 明细合计 + /// + public string SumlistField { get; set; } } } diff --git a/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs index 4145239..fc94c3d 100644 --- a/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs +++ b/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs @@ -71,6 +71,23 @@ namespace Lskj.Control.Model /// 替换参数前执行 /// public event BeforeHandleParamsEventHandler OnBeforeHandleParamsCallback; + + /// + /// 触发替换参数前事件,并返回事件处理后的参数值。 + /// + protected string RaiseBeforeHandleParamsCallback(List paramList, DataRow[] rowDatas, string paramItem, DataRow rowData, string fieldValue) + { + BeforeHandleParamsEventHandler handler = OnBeforeHandleParamsCallback; + if (handler == null) + return fieldValue; + + HandleParamsArgs handleParamsArgs = new HandleParamsArgs(paramList, rowDatas, paramItem, rowData) + { + FieldValue = fieldValue + }; + handler(this, handleParamsArgs); + return handleParamsArgs.FieldValue; + } /// /// 缓存右键菜单 /// @@ -1899,15 +1916,7 @@ namespace Lskj.Control.Model if (!string.IsNullOrWhiteSpace(item)) { string fieldValue = ReplaceHelper.ReplaceUserInfo(item); - if (OnBeforeHandleParamsCallback != null) - { - HandleParamsArgs handleParamsArgs = new HandleParamsArgs(paramList, rowDatas, item, rowData) - { - FieldValue = fieldValue - }; - OnBeforeHandleParamsCallback(this, handleParamsArgs); - fieldValue = handleParamsArgs.FieldValue; - } + fieldValue = RaiseBeforeHandleParamsCallback(paramList, rowDatas, item, rowData, fieldValue); if (!string.IsNullOrWhiteSpace(fieldValue) && fieldValue.TrimStart().StartsWith("MergeExec_", StringComparison.OrdinalIgnoreCase)) { fieldValue = ReplaceHelper.ReplaceRowParam(rowDatas, fieldValue.Replace("MergeExec_", "", true)); @@ -2086,4 +2095,4 @@ namespace Lskj.Control.Model } } } -} \ No newline at end of file +} diff --git a/插件库/Lskj.Control/Model/MenuStrip/GridViewMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/GridViewMenuStrip.cs index 0c18d41..16ef186 100644 --- a/插件库/Lskj.Control/Model/MenuStrip/GridViewMenuStrip.cs +++ b/插件库/Lskj.Control/Model/MenuStrip/GridViewMenuStrip.cs @@ -40,8 +40,7 @@ namespace Lskj.Control.Model protected override void MenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e) { - int[] mSelectRows = this._gridView.GetSelectedRows(); - if (mSelectRows == null || mSelectRows.Length == 0) return; + int[] mSelectRows = this._gridView.GetSelectedRows() ?? new int[0]; DataRow[] dataRows = new DataRow[mSelectRows.Length]; for (int i = 0; i < mSelectRows.Length; i++) @@ -49,49 +48,53 @@ namespace Lskj.Control.Model dataRows[i] = this._gridView.GetDataRow(mSelectRows[i]); } - - DataRow mSelectRow = this._gridView.GetDataRow(mSelectRows[0]); - this._gridView.UpdateCurrentRow(); - this._gridView.ShowEditor(); - ContextMenuStrip cmsMenu = (ContextMenuStrip)sender; cmsMenu.Items.Clear(); cmsMenu.Items.AddRange(this.RightMenuItems.ToArray()); - // 创建QQ、浏览器右键菜单 - List mQQArray = new List(); - List mBrowerArray = new List(); - foreach (GridColumn column in this._gridView.Columns) + if (mSelectRows.Length > 0) { - if (!mSelectRow.Table.Columns.Contains(column.Name)) - continue; - string rowValue = mSelectRow[column.Name] + ""; - if (!string.IsNullOrWhiteSpace(rowValue)) + DataRow mSelectRow = this._gridView.GetDataRow(mSelectRows[0]); + this._gridView.UpdateCurrentRow(); + this._gridView.ShowEditor(); + + // 创建QQ、浏览器右键菜单 + List mQQArray = new List(); + List mBrowerArray = new List(); + + foreach (GridColumn column in this._gridView.Columns) { - GridColumnModel model = column.Tag as GridColumnModel; - if (model == null) continue; - - if (model.FieldType == ControlType.LabQQ) + if (!mSelectRow.Table.Columns.Contains(column.Name)) + continue; + string rowValue = mSelectRow[column.Name] + ""; + if (!string.IsNullOrWhiteSpace(rowValue)) { - ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); - item.Tag = mSelectRow[column.Name] + ""; - item.Click += new EventHandler(QQItemClick); - mQQArray.Add(item); - } + GridColumnModel model = column.Tag as GridColumnModel; + if (model == null) continue; - if (model.FieldType == ControlType.LabWWW && !string.IsNullOrWhiteSpace(rowValue)) - { - ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.www); - item.Tag = mSelectRow[column.Name] + ""; - item.Click += new EventHandler(BrowerItemClick); - mBrowerArray.Add(item); + if (model.FieldType == ControlType.LabQQ) + { + ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); + item.Tag = mSelectRow[column.Name] + ""; + item.Click += new EventHandler(QQItemClick); + mQQArray.Add(item); + } + + if (model.FieldType == ControlType.LabWWW && !string.IsNullOrWhiteSpace(rowValue)) + { + ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.www); + item.Tag = mSelectRow[column.Name] + ""; + item.Click += new EventHandler(BrowerItemClick); + mBrowerArray.Add(item); + } } } + + cmsMenu.Items.AddRange(mQQArray.ToArray()); + cmsMenu.Items.AddRange(mBrowerArray.ToArray()); } - cmsMenu.Items.AddRange(mQQArray.ToArray()); - cmsMenu.Items.AddRange(mBrowerArray.ToArray()); Dictionary cmsModelDic = new Dictionary(); List roleNamesList = new List(); @@ -103,6 +106,8 @@ namespace Lskj.Control.Model roleNamesList.Add(model.PrivilegeOper); } } + + // 判断右键菜单是否可用 foreach (ToolStripItem cms in cmsMenu.Items) { @@ -126,20 +131,28 @@ namespace Lskj.Control.Model StringBuilder sqlCondBuilder = new StringBuilder(); GridCell[] cells = this._gridView.GetSelectedCells(); DataRow focusedRow = this.BaseGridView.GetFocusedDataRow(); - foreach (int itemIndex in mSelectRows) + + DataRow[] conditionRows = dataRows; + if (model.AllowNullExec && conditionRows.Length == 0) { - DataRow selectRow = this._gridView.GetDataRow(itemIndex); - string cond = string.Empty; + conditionRows = new DataRow[] { new DataTable().NewRow() }; + } + + foreach (DataRow selectRow in conditionRows) + { + //DataRow selectRow = this._gridView.GetDataRow(itemIndex); + string cond = ReplaceHelper.ReplaceUserInfo(model.MenuCond); + cond = RaiseBeforeHandleParamsCallback(model.ParamList, conditionRows, model.MenuCond, selectRow, cond); if (this._control != null) { - cond = _control.ReplaceParentControlValue(model.MenuCond); + cond = _control.ReplaceParentControlValue(cond); } - cond = ReplaceHelper.ReplaceRowParam(selectRow, model.MenuCond); + cond = ReplaceHelper.ReplaceRowParam(selectRow, cond); if (model.Mergeexec&& cond.StartsWith("@")) { //替换[],替换的是多选行中的数据 - cond = ReplaceHelper.ReplaceRowParam(dataRows, cond.Replace("[", "{").Replace("]", "}"), "", ""); + cond = ReplaceHelper.ReplaceRowParam(conditionRows, cond.Replace("[", "{").Replace("]", "}"), "", ""); } if (this._gridView != null) @@ -151,6 +164,7 @@ namespace Lskj.Control.Model cond = cond.ReplaceColumnParam(cell.Column.Name, cell.Column.Caption, colValue); } } + if (ControlObj != null) { cond = ControlObj.ReplaceParentControlValue(cond); @@ -164,15 +178,19 @@ namespace Lskj.Control.Model condBuilder.Append($"({cond}) and "); } } - string condStr = ""; - if (model.MenuCond.StartsWith("@")) + string condStr = model.MenuCond; + if (!string.IsNullOrWhiteSpace(sqlCondBuilder.ToString()) || !string.IsNullOrWhiteSpace(condBuilder.ToString())) { - condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end"; - } - else - { - condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a'); + if (model.MenuCond.StartsWith("@")) + { + condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end"; + } + else + { + condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a'); + } } + condResult = ValidateCond(condStr, null); //if (!condResult) break; //cms.Enabled = ReplaceHelper.EvalCond(cond); diff --git a/插件库/Lskj.Control/Model/MenuStrip/TreeGridViewMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/TreeGridViewMenuStrip.cs index c438e78..ad1d646 100644 --- a/插件库/Lskj.Control/Model/MenuStrip/TreeGridViewMenuStrip.cs +++ b/插件库/Lskj.Control/Model/MenuStrip/TreeGridViewMenuStrip.cs @@ -73,56 +73,58 @@ namespace Lskj.Control.Model.MenuStrip } protected override void MenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e) { - DataRow[] mSelectRows = this.TreeGridControlObj.GetViewFocusedDataRows(); - if (mSelectRows == null || mSelectRows.Length == 0) return; - - DataRow mSelectRow = mSelectRows[0]; - this._treeView.EndCurrentEdit(); - this._treeView.ShowEditor(); + DataRow[] mSelectRows = this.TreeGridControlObj.GetViewFocusedDataRows() ?? new DataRow[0]; ContextMenuStrip cmsMenu = (ContextMenuStrip)sender; cmsMenu.Items.Clear(); cmsMenu.Items.AddRange(this.RightMenuItems.ToArray()); - // 创建QQ、浏览器右键菜单 - List mQQArray = new List(); - List mBrowerArray = new List(); - - foreach (TreeListColumn column in this._treeView.Columns) + if (mSelectRows.Length > 0) { - if (!mSelectRow.Table.Columns.Contains(column.Name)) - continue; - string rowValue = mSelectRow[column.Name] + ""; - if (!string.IsNullOrWhiteSpace(rowValue)) + DataRow mSelectRow = mSelectRows[0]; + this._treeView.EndCurrentEdit(); + this._treeView.ShowEditor(); + + // 创建QQ、浏览器右键菜单 + List mQQArray = new List(); + List mBrowerArray = new List(); + + foreach (TreeListColumn column in this._treeView.Columns) { - GridColumnModel model = column.Tag as GridColumnModel; - if (model == null) continue; - - if (model.FieldType == ControlType.LabQQ) + if (!mSelectRow.Table.Columns.Contains(column.Name)) + continue; + string rowValue = mSelectRow[column.Name] + ""; + if (!string.IsNullOrWhiteSpace(rowValue)) { - ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); - item.Tag = mSelectRow[column.Name] + ""; - item.Click += new EventHandler(QQItemClick); - mQQArray.Add(item); - } + GridColumnModel model = column.Tag as GridColumnModel; + if (model == null) continue; - if (model.FieldType == ControlType.LabWWW && - (rowValue.StartsWith("www.") || - rowValue.StartsWith("http://") || - rowValue.StartsWith("https://") || - rowValue.StartsWith("ftp://") || - rowValue.StartsWith("file://"))) - { - ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); - item.Tag = mSelectRow[column.Name] + ""; - item.Click += new EventHandler(BrowerItemClick); - mBrowerArray.Add(item); + if (model.FieldType == ControlType.LabQQ) + { + ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); + item.Tag = mSelectRow[column.Name] + ""; + item.Click += new EventHandler(QQItemClick); + mQQArray.Add(item); + } + + if (model.FieldType == ControlType.LabWWW && + (rowValue.StartsWith("www.") || + rowValue.StartsWith("http://") || + rowValue.StartsWith("https://") || + rowValue.StartsWith("ftp://") || + rowValue.StartsWith("file://"))) + { + ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); + item.Tag = mSelectRow[column.Name] + ""; + item.Click += new EventHandler(BrowerItemClick); + mBrowerArray.Add(item); + } } } - } - cmsMenu.Items.AddRange(mQQArray.ToArray()); - cmsMenu.Items.AddRange(mBrowerArray.ToArray()); + cmsMenu.Items.AddRange(mQQArray.ToArray()); + cmsMenu.Items.AddRange(mBrowerArray.ToArray()); + } // 判断右键菜单是否可用 foreach (ToolStripItem cms in cmsMenu.Items) @@ -139,19 +141,27 @@ namespace Lskj.Control.Model.MenuStrip StringBuilder sqlCondBuilder = new StringBuilder(); List cells = this._treeView != null ? this._treeView.GetSelectedCells() : null; DataRow focusedRow = this.TreeGridControlObj.GetViewFocusedDataRow(); - foreach (DataRow selectRow in mSelectRows) + + DataRow[] conditionRows = mSelectRows; + if (model.AllowNullExec && conditionRows.Length == 0) + { + conditionRows = new DataRow[] { new DataTable().NewRow() }; + } + + foreach (DataRow selectRow in conditionRows) { if (selectRow == null) continue; - string cond = string.Empty; + string cond = ReplaceHelper.ReplaceUserInfo(model.MenuCond); + cond = RaiseBeforeHandleParamsCallback(model.ParamList, conditionRows, model.MenuCond, selectRow, cond); if (this._control != null) - cond = _control.ReplaceParentControlValue(model.MenuCond); - cond = ReplaceHelper.ReplaceRowParam(selectRow, model.MenuCond); + cond = _control.ReplaceParentControlValue(cond); + cond = ReplaceHelper.ReplaceRowParam(selectRow, cond); if (model.Mergeexec && cond.StartsWith("@")) { //替换[],替换的是多选行中的数据 - cond = ReplaceHelper.ReplaceRowParam(mSelectRows, cond.Replace("[", "{").Replace("]", "}"), "", ""); + cond = ReplaceHelper.ReplaceRowParam(conditionRows, cond.Replace("[", "{").Replace("]", "}"), "", ""); } if (cells != null && cells.Count > 0 && cond.Contains("{COLUMN_")) @@ -173,14 +183,17 @@ namespace Lskj.Control.Model.MenuStrip condBuilder.Append($"({cond}) and "); } } - string condStr = ""; - if (model.MenuCond.StartsWith("@")) + string condStr = model.MenuCond; + if (!string.IsNullOrWhiteSpace(sqlCondBuilder.ToString()) || !string.IsNullOrWhiteSpace(condBuilder.ToString())) { - condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end"; - } - else - { - condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a'); + if (model.MenuCond.StartsWith("@")) + { + condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end"; + } + else + { + condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a'); + } } condResult = ValidateCond(condStr, null); //cms.Enabled = ReplaceHelper.EvalCond(cond); diff --git a/插件库/Lskj.Control/Model/MyControl.cs b/插件库/Lskj.Control/Model/MyControl.cs index 535b49a..2558f5d 100644 --- a/插件库/Lskj.Control/Model/MyControl.cs +++ b/插件库/Lskj.Control/Model/MyControl.cs @@ -4212,7 +4212,7 @@ namespace Lskj.Control.Model model.ModuleFrameDisplayText = item.Table.Columns.Contains("ModuleFrameDisplayText") ? "1".Equals(item["ModuleFrameDisplayText"] + "") : false; model.InputBoxFontSize = item.Table.Columns.Contains("InputBoxFontSize") && !string.IsNullOrEmpty(item["InputBoxFontSize"] + "") ? Convert.ToInt32(item["InputBoxFontSize"] + "") : 0; model.RememberValue = item.Table.Columns.Contains("RememberValue") ? "1".Equals(item["RememberValue"] + "") : false; - + model.SumlistField = item.Table.Columns.Contains("SumlistField") ? item["SumlistField"] + "" : ""; //为了和工具里和bs里统一 if (model.FieldType == 42) diff --git a/插件库/Lskj.Control/ModuleGridEx.cs b/插件库/Lskj.Control/ModuleGridEx.cs index c8573c3..6aad0a4 100644 --- a/插件库/Lskj.Control/ModuleGridEx.cs +++ b/插件库/Lskj.Control/ModuleGridEx.cs @@ -1603,6 +1603,8 @@ namespace Lskj.Control this.bbi_export.Enabled = this.SysModel.ExportEnable; this.pl_top_fix_search.Enabled = this.pl_top_search.Enabled = this.SysModel.SearchEnable; this.pl_buttom.Visible = this.VisibleOperPanel && (this.SysModel.AddEnable || this.SysModel.DeleteEnable || (this.SysModel.ModifyEnable && this.SysModel.CanEdit)); + + this.btnUpdate.Enabled = this.SysModel.ModifyEnable && this.SysModel.CanEdit; this.gcMain.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged); if (this.LeftGridEx != null) this.LeftGridEx.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged); @@ -1611,7 +1613,7 @@ namespace Lskj.Control } else { - this.btnAdd.Enabled = this.btnDel.Enabled = this.btnSave.Enabled = this.bbi_import.Enabled = false; + this.btnUpdate.Enabled=this.btnAdd.Enabled = this.btnDel.Enabled = this.btnSave.Enabled = this.bbi_import.Enabled = false; this.gcMain.GridView.OptionsBehavior.Editable = false; this.pl_buttom.Visible = false; } diff --git a/插件库/Lskj.Model/BillModel.cs b/插件库/Lskj.Model/BillModel.cs index 561fdef..1b95f1e 100644 --- a/插件库/Lskj.Model/BillModel.cs +++ b/插件库/Lskj.Model/BillModel.cs @@ -467,6 +467,14 @@ namespace Lskj.Model /// 单据横向模式 /// public bool HorizontalMode; + /// + /// 树表格老版节点号模式 + /// + public bool OldNodeRules; + /// + /// 新版树节点位数(默认2位,最小2位) + /// + public int TreeNumberNodes; /// @@ -575,6 +583,8 @@ namespace Lskj.Model this.SourceMainPushPullHide = rowItem.Table.Columns.Contains("SourceMainPushPullHide") ? "1".Equals(rowItem["SourceMainPushPullHide"] + "") : false; this.SelectSourceColor = rowItem.Table.Columns.Contains("SelectSourceColor") ? rowItem["SelectSourceColor"] + "" : ""; this.HorizontalMode = rowItem.Table.Columns.Contains("HorizontalMode") ? "1".Equals(rowItem["HorizontalMode"] + "") : false; + this.OldNodeRules = rowItem.Table.Columns.Contains("OldNodeRules") ? "1".Equals(rowItem["OldNodeRules"] + "") : false; + this.TreeNumberNodes = rowItem.Table.Columns.Contains("MessageRefreshTime") && !string.IsNullOrEmpty(rowItem["MessageRefreshTime"] + "") ? Convert.ToInt32(rowItem["MessageRefreshTime"] + "")>2? Convert.ToInt32(rowItem["MessageRefreshTime"] + ""):2 : 2; } } } \ No newline at end of file diff --git a/插件库/Lskj.PubBill/BillModule.cs b/插件库/Lskj.PubBill/BillModule.cs index f4f5b83..11939d9 100644 --- a/插件库/Lskj.PubBill/BillModule.cs +++ b/插件库/Lskj.PubBill/BillModule.cs @@ -2115,7 +2115,7 @@ namespace Lskj.PubBill { gridEx.LeftTreeViewEx = treeView; } - else + else { gridEx.LeftGridEx = gridControl; gridEx.ParentGridEx = gridControl; @@ -2190,6 +2190,8 @@ namespace Lskj.PubBill } gridDetail.SetGridRowColors(dtBaseGridRowColors); gridDetail.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridDetailRightMenuCallback); + gridDetail.gridViewRightMenu.OnBeforeHandleParamsCallback += OnBeforeHandleParamsCallback; + gridDetail.Parent = tabDetail; gridDetail.BorderStyle = System.Windows.Forms.BorderStyle.None; @@ -2232,6 +2234,9 @@ namespace Lskj.PubBill } gridDetail.SetGridRowColors(dtBaseGridRowColors); gridDetail.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridDetailRightMenuCallback); + + gridDetail.gridViewRightMenu.OnBeforeHandleParamsCallback += OnBeforeHandleParamsCallback; + if (BillModel.IsBillDetailCheck == 0) { if (model.MainDetailsAddType != "2") gridDetail.GridView.DoubleClick += new EventHandler(OnGridDetailDoubleClick); @@ -2442,6 +2447,8 @@ namespace Lskj.PubBill + + /// /// 单据来源拖拽到主表明细中(树表格拖拽到树表格) /// @@ -3882,7 +3889,10 @@ namespace Lskj.PubBill if (!string.IsNullOrEmpty(checkStrs)) checkStrs = " and SpeciesNo in (" + checkStrs.TrimEnd(',') + ")"; - sqlValue = string.Format("select * from ({0}) temp where 1=1 ", ReplaceHelper.ReplaceWhereCond(sqlValue) + checkStrs) + string.Format(" and ({0} like '%{1}%' or dbo.P_getpy({0}) like '%{1}%')", fieldName, fieldValue); + + string FinalCondition = this.pl_treeview_detault_search.Visible ? string.Format(" and ({0} like '%{1}%' or dbo.P_getpy({0}) like '%{1}%')", fieldName, fieldValue) : ""; + sqlValue = string.Format("select * from ({0}) temp where 1=1 ", ReplaceHelper.ReplaceWhereCond(sqlValue) + checkStrs) + FinalCondition; + //sqlValue = string.Format("select * from ({0}) temp where 1=1 ", ReplaceHelper.ReplaceWhereCond(sqlValue) + checkStrs) + string.Format(" and ({0} like '%{1}%' or dbo.P_getpy({0}) like '%{1}%')", fieldName, fieldValue); try { @@ -5172,6 +5182,8 @@ namespace Lskj.PubBill } } + DataTable detailTable = this.gcMain.GridControl.DataSourceTable().TrimDeleteRows(); + StringBuilder fieldBuilder = new StringBuilder(); StringBuilder valueBuilder = new StringBuilder(); @@ -5196,6 +5208,14 @@ namespace Lskj.PubBill fieldValue = fieldValue.Trim(); if (fieldValue == "****") continue; + if (!string.IsNullOrWhiteSpace(model.SumlistField) && detailTable.Columns.Contains(model.SumlistField)) + { + // 基础用法,列存在null会自动忽略 + object objSum = detailTable.Compute("Sum(" + model.SumlistField + ")", ""); + decimal total = objSum == DBNull.Value ? 0 : Convert.ToDecimal(objSum); + fieldValue = total + ""; + } + errorMessage = errorMessage + DatabaseFormatJudgment.SaveOrModifyBalidation(DetailedProperties, model, fieldValue); if (string.IsNullOrEmpty(fieldValue) && model.Isintordecimal) fieldValue = "0";//数值保存时为空的话默认保存为0; @@ -5230,6 +5250,7 @@ namespace Lskj.PubBill { StringBuilder updateBuilder = new StringBuilder(); + DataTable detailTable = this.gcMain.GridControl.DataSourceTable().TrimDeleteRows(); //DataTable DetailedProperties = BaseImpl.GetDataTableResult(string.Format("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_name = '{0}'", BillModel.MasterTable)); DataTable DetailedProperties = MainImpl.GetDatabaseProperty(BillModel.MasterTable); @@ -5255,6 +5276,14 @@ namespace Lskj.PubBill fieldValue = fieldValue.Trim(); if (fieldValue == "****") continue; + if (!string.IsNullOrWhiteSpace(model.SumlistField)&& detailTable.Columns.Contains(model.SumlistField)) + { + // 基础用法,列存在null会自动忽略 + object objSum = detailTable.Compute("Sum("+ model.SumlistField + ")", ""); + decimal total = objSum == DBNull.Value ? 0 : Convert.ToDecimal(objSum); + fieldValue = total+""; + } + errorMessage = errorMessage + DatabaseFormatJudgment.SaveOrModifyBalidation(DetailedProperties, model, fieldValue); if (string.IsNullOrEmpty(fieldValue) && model.Isintordecimal) fieldValue = "0";//数值保存时为空的话默认保存为0; @@ -6789,6 +6818,60 @@ namespace Lskj.PubBill this.RefreshSourceDetail(tabPage.Tag as BillSourceUnionModel); } + /// + /// 单据来源明细右键替换参数前执行 + /// + /// + /// + private void OnBeforeHandleParamsCallback(object sender, HandleParamsArgs e) + { + if (!string.IsNullOrWhiteSpace(e.ParamItem) && e.ParamItem.Contains("{BillSource_")) + { + string item = e.ParamItem; + XtraTabPage tabPage = this.xtc_left_container.SelectedTabPage; + BillSourceUnionModel model = tabPage.Tag as BillSourceUnionModel; + TreeNode node = null; + DataRow selectRow = null; + if (model.ModelObj.SourceType == 1) + { + node = model.TreeViewObj.TreeView.SelectedNode; + if (node == null) + node = model.TreeViewObj.TreeView.Nodes[0]; + } + else if (model.ModelObj.SourceType == 3 || model.ModelObj.SourceType == 4) + { + selectRow = model.TreeGridControlObj.GetViewFocusedDataRow(); + } + else + { + selectRow = model.GridControlObj.GetViewFocusedDataRow(); + } + + + // 正则 + 忽略大小写标记 + MatchCollection matches = Regex.Matches( + item, + @"\{BillSource_.*?\}", + RegexOptions.IgnoreCase // 关键:忽略大小写 + ); + + foreach (Match match in matches) + { + if (node != null) + { + item = item.Replace(match.Value, node.Name); + } + else if (selectRow != null) + { + item = item.Replace(match.Value, ReplaceHelper.ReplaceRowParam(selectRow, match.Value.Replace("BillSource_",""))); + } + + } + e.FieldValue = item; + } + + } + /// /// 底部明细右键后刷新