Compare commits
3 Commits
tdx
...
a11ef73f1c
| Author | SHA1 | Date | |
|---|---|---|---|
| a11ef73f1c | |||
| 0a1d027407 | |||
| bcf9f1b58c |
@@ -21,14 +21,14 @@ namespace NewMyFormDesigner
|
|||||||
{
|
{
|
||||||
MyFormDesigner myFormDesigner = new MyFormDesigner();
|
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,
|
//myFormDesigner.SelectSQL = @"select b.orderid,b.id as fieldid,fieldname,username1 as username,
|
||||||
// fieldsqltag as fieldtypeid,defaultdate as defaultValue
|
// fieldsqltag as fieldtypeid,defaultdate as defaultValue
|
||||||
// from p_systemDlltab a
|
// 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}'";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -366,7 +366,10 @@ namespace Lskj.Control.Model
|
|||||||
///记住上一次的值(关闭时记住上一次的条件值,下一次打开时输入上去。关闭程序后清空)
|
///记住上一次的值(关闭时记住上一次的条件值,下一次打开时输入上去。关闭程序后清空)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool RememberValue { get; set; }
|
public bool RememberValue { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 明细合计
|
||||||
|
/// </summary>
|
||||||
|
public string SumlistField { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,23 @@ namespace Lskj.Control.Model
|
|||||||
/// 替换参数前执行
|
/// 替换参数前执行
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event BeforeHandleParamsEventHandler OnBeforeHandleParamsCallback;
|
public event BeforeHandleParamsEventHandler OnBeforeHandleParamsCallback;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 触发替换参数前事件,并返回事件处理后的参数值。
|
||||||
|
/// </summary>
|
||||||
|
protected string RaiseBeforeHandleParamsCallback(List<string> 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;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 缓存右键菜单
|
/// 缓存右键菜单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1899,15 +1916,7 @@ namespace Lskj.Control.Model
|
|||||||
if (!string.IsNullOrWhiteSpace(item))
|
if (!string.IsNullOrWhiteSpace(item))
|
||||||
{
|
{
|
||||||
string fieldValue = ReplaceHelper.ReplaceUserInfo(item);
|
string fieldValue = ReplaceHelper.ReplaceUserInfo(item);
|
||||||
if (OnBeforeHandleParamsCallback != null)
|
fieldValue = RaiseBeforeHandleParamsCallback(paramList, rowDatas, item, rowData, fieldValue);
|
||||||
{
|
|
||||||
HandleParamsArgs handleParamsArgs = new HandleParamsArgs(paramList, rowDatas, item, rowData)
|
|
||||||
{
|
|
||||||
FieldValue = fieldValue
|
|
||||||
};
|
|
||||||
OnBeforeHandleParamsCallback(this, handleParamsArgs);
|
|
||||||
fieldValue = handleParamsArgs.FieldValue;
|
|
||||||
}
|
|
||||||
if (!string.IsNullOrWhiteSpace(fieldValue) && fieldValue.TrimStart().StartsWith("MergeExec_", StringComparison.OrdinalIgnoreCase))
|
if (!string.IsNullOrWhiteSpace(fieldValue) && fieldValue.TrimStart().StartsWith("MergeExec_", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
fieldValue = ReplaceHelper.ReplaceRowParam(rowDatas, fieldValue.Replace("MergeExec_", "", true));
|
fieldValue = ReplaceHelper.ReplaceRowParam(rowDatas, fieldValue.Replace("MergeExec_", "", true));
|
||||||
|
|||||||
@@ -40,8 +40,7 @@ namespace Lskj.Control.Model
|
|||||||
|
|
||||||
protected override void MenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)
|
protected override void MenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)
|
||||||
{
|
{
|
||||||
int[] mSelectRows = this._gridView.GetSelectedRows();
|
int[] mSelectRows = this._gridView.GetSelectedRows() ?? new int[0];
|
||||||
if (mSelectRows == null || mSelectRows.Length == 0) return;
|
|
||||||
|
|
||||||
DataRow[] dataRows = new DataRow[mSelectRows.Length];
|
DataRow[] dataRows = new DataRow[mSelectRows.Length];
|
||||||
for (int i = 0; i < mSelectRows.Length; i++)
|
for (int i = 0; i < mSelectRows.Length; i++)
|
||||||
@@ -49,15 +48,17 @@ namespace Lskj.Control.Model
|
|||||||
dataRows[i] = this._gridView.GetDataRow(mSelectRows[i]);
|
dataRows[i] = this._gridView.GetDataRow(mSelectRows[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DataRow mSelectRow = this._gridView.GetDataRow(mSelectRows[0]);
|
|
||||||
this._gridView.UpdateCurrentRow();
|
|
||||||
this._gridView.ShowEditor();
|
|
||||||
|
|
||||||
ContextMenuStrip cmsMenu = (ContextMenuStrip)sender;
|
ContextMenuStrip cmsMenu = (ContextMenuStrip)sender;
|
||||||
cmsMenu.Items.Clear();
|
cmsMenu.Items.Clear();
|
||||||
cmsMenu.Items.AddRange(this.RightMenuItems.ToArray());
|
cmsMenu.Items.AddRange(this.RightMenuItems.ToArray());
|
||||||
|
|
||||||
|
|
||||||
|
if (mSelectRows.Length > 0)
|
||||||
|
{
|
||||||
|
DataRow mSelectRow = this._gridView.GetDataRow(mSelectRows[0]);
|
||||||
|
this._gridView.UpdateCurrentRow();
|
||||||
|
this._gridView.ShowEditor();
|
||||||
|
|
||||||
// 创建QQ、浏览器右键菜单
|
// 创建QQ、浏览器右键菜单
|
||||||
List<ToolStripMenuItem> mQQArray = new List<ToolStripMenuItem>();
|
List<ToolStripMenuItem> mQQArray = new List<ToolStripMenuItem>();
|
||||||
List<ToolStripMenuItem> mBrowerArray = new List<ToolStripMenuItem>();
|
List<ToolStripMenuItem> mBrowerArray = new List<ToolStripMenuItem>();
|
||||||
@@ -92,6 +93,8 @@ namespace Lskj.Control.Model
|
|||||||
|
|
||||||
cmsMenu.Items.AddRange(mQQArray.ToArray());
|
cmsMenu.Items.AddRange(mQQArray.ToArray());
|
||||||
cmsMenu.Items.AddRange(mBrowerArray.ToArray());
|
cmsMenu.Items.AddRange(mBrowerArray.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Dictionary<ToolStripItem, GridRightMenuModel> cmsModelDic = new Dictionary<ToolStripItem, GridRightMenuModel>();
|
Dictionary<ToolStripItem, GridRightMenuModel> cmsModelDic = new Dictionary<ToolStripItem, GridRightMenuModel>();
|
||||||
List<string> roleNamesList = new List<string>();
|
List<string> roleNamesList = new List<string>();
|
||||||
@@ -103,6 +106,8 @@ namespace Lskj.Control.Model
|
|||||||
roleNamesList.Add(model.PrivilegeOper);
|
roleNamesList.Add(model.PrivilegeOper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 判断右键菜单是否可用
|
// 判断右键菜单是否可用
|
||||||
foreach (ToolStripItem cms in cmsMenu.Items)
|
foreach (ToolStripItem cms in cmsMenu.Items)
|
||||||
{
|
{
|
||||||
@@ -126,20 +131,28 @@ namespace Lskj.Control.Model
|
|||||||
StringBuilder sqlCondBuilder = new StringBuilder();
|
StringBuilder sqlCondBuilder = new StringBuilder();
|
||||||
GridCell[] cells = this._gridView.GetSelectedCells();
|
GridCell[] cells = this._gridView.GetSelectedCells();
|
||||||
DataRow focusedRow = this.BaseGridView.GetFocusedDataRow();
|
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);
|
conditionRows = new DataRow[] { new DataTable().NewRow() };
|
||||||
string cond = string.Empty;
|
}
|
||||||
|
|
||||||
|
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)
|
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("@"))
|
if (model.Mergeexec&& cond.StartsWith("@"))
|
||||||
{
|
{
|
||||||
//替换[],替换的是多选行中的数据
|
//替换[],替换的是多选行中的数据
|
||||||
cond = ReplaceHelper.ReplaceRowParam(dataRows, cond.Replace("[", "{").Replace("]", "}"), "", "");
|
cond = ReplaceHelper.ReplaceRowParam(conditionRows, cond.Replace("[", "{").Replace("]", "}"), "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._gridView != null)
|
if (this._gridView != null)
|
||||||
@@ -151,6 +164,7 @@ namespace Lskj.Control.Model
|
|||||||
cond = cond.ReplaceColumnParam(cell.Column.Name, cell.Column.Caption, colValue);
|
cond = cond.ReplaceColumnParam(cell.Column.Name, cell.Column.Caption, colValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ControlObj != null)
|
if (ControlObj != null)
|
||||||
{
|
{
|
||||||
cond = ControlObj.ReplaceParentControlValue(cond);
|
cond = ControlObj.ReplaceParentControlValue(cond);
|
||||||
@@ -164,7 +178,9 @@ namespace Lskj.Control.Model
|
|||||||
condBuilder.Append($"({cond}) and ");
|
condBuilder.Append($"({cond}) and ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
string condStr = "";
|
string condStr = model.MenuCond;
|
||||||
|
if (!string.IsNullOrWhiteSpace(sqlCondBuilder.ToString()) || !string.IsNullOrWhiteSpace(condBuilder.ToString()))
|
||||||
|
{
|
||||||
if (model.MenuCond.StartsWith("@"))
|
if (model.MenuCond.StartsWith("@"))
|
||||||
{
|
{
|
||||||
condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end";
|
condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end";
|
||||||
@@ -173,6 +189,8 @@ namespace Lskj.Control.Model
|
|||||||
{
|
{
|
||||||
condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a');
|
condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
condResult = ValidateCond(condStr, null);
|
condResult = ValidateCond(condStr, null);
|
||||||
//if (!condResult) break;
|
//if (!condResult) break;
|
||||||
//cms.Enabled = ReplaceHelper.EvalCond(cond);
|
//cms.Enabled = ReplaceHelper.EvalCond(cond);
|
||||||
|
|||||||
@@ -73,17 +73,18 @@ namespace Lskj.Control.Model.MenuStrip
|
|||||||
}
|
}
|
||||||
protected override void MenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)
|
protected override void MenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)
|
||||||
{
|
{
|
||||||
DataRow[] mSelectRows = this.TreeGridControlObj.GetViewFocusedDataRows();
|
DataRow[] mSelectRows = this.TreeGridControlObj.GetViewFocusedDataRows() ?? new DataRow[0];
|
||||||
if (mSelectRows == null || mSelectRows.Length == 0) return;
|
|
||||||
|
|
||||||
DataRow mSelectRow = mSelectRows[0];
|
|
||||||
this._treeView.EndCurrentEdit();
|
|
||||||
this._treeView.ShowEditor();
|
|
||||||
|
|
||||||
ContextMenuStrip cmsMenu = (ContextMenuStrip)sender;
|
ContextMenuStrip cmsMenu = (ContextMenuStrip)sender;
|
||||||
cmsMenu.Items.Clear();
|
cmsMenu.Items.Clear();
|
||||||
cmsMenu.Items.AddRange(this.RightMenuItems.ToArray());
|
cmsMenu.Items.AddRange(this.RightMenuItems.ToArray());
|
||||||
|
|
||||||
|
if (mSelectRows.Length > 0)
|
||||||
|
{
|
||||||
|
DataRow mSelectRow = mSelectRows[0];
|
||||||
|
this._treeView.EndCurrentEdit();
|
||||||
|
this._treeView.ShowEditor();
|
||||||
|
|
||||||
// 创建QQ、浏览器右键菜单
|
// 创建QQ、浏览器右键菜单
|
||||||
List<ToolStripMenuItem> mQQArray = new List<ToolStripMenuItem>();
|
List<ToolStripMenuItem> mQQArray = new List<ToolStripMenuItem>();
|
||||||
List<ToolStripMenuItem> mBrowerArray = new List<ToolStripMenuItem>();
|
List<ToolStripMenuItem> mBrowerArray = new List<ToolStripMenuItem>();
|
||||||
@@ -123,6 +124,7 @@ namespace Lskj.Control.Model.MenuStrip
|
|||||||
|
|
||||||
cmsMenu.Items.AddRange(mQQArray.ToArray());
|
cmsMenu.Items.AddRange(mQQArray.ToArray());
|
||||||
cmsMenu.Items.AddRange(mBrowerArray.ToArray());
|
cmsMenu.Items.AddRange(mBrowerArray.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
// 判断右键菜单是否可用
|
// 判断右键菜单是否可用
|
||||||
foreach (ToolStripItem cms in cmsMenu.Items)
|
foreach (ToolStripItem cms in cmsMenu.Items)
|
||||||
@@ -139,19 +141,27 @@ namespace Lskj.Control.Model.MenuStrip
|
|||||||
StringBuilder sqlCondBuilder = new StringBuilder();
|
StringBuilder sqlCondBuilder = new StringBuilder();
|
||||||
List<TreeListCell> cells = this._treeView != null ? this._treeView.GetSelectedCells() : null;
|
List<TreeListCell> cells = this._treeView != null ? this._treeView.GetSelectedCells() : null;
|
||||||
DataRow focusedRow = this.TreeGridControlObj.GetViewFocusedDataRow();
|
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;
|
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)
|
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("@"))
|
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_"))
|
if (cells != null && cells.Count > 0 && cond.Contains("{COLUMN_"))
|
||||||
@@ -173,7 +183,9 @@ namespace Lskj.Control.Model.MenuStrip
|
|||||||
condBuilder.Append($"({cond}) and ");
|
condBuilder.Append($"({cond}) and ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
string condStr = "";
|
string condStr = model.MenuCond;
|
||||||
|
if (!string.IsNullOrWhiteSpace(sqlCondBuilder.ToString()) || !string.IsNullOrWhiteSpace(condBuilder.ToString()))
|
||||||
|
{
|
||||||
if (model.MenuCond.StartsWith("@"))
|
if (model.MenuCond.StartsWith("@"))
|
||||||
{
|
{
|
||||||
condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end";
|
condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end";
|
||||||
@@ -182,6 +194,7 @@ namespace Lskj.Control.Model.MenuStrip
|
|||||||
{
|
{
|
||||||
condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a');
|
condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
condResult = ValidateCond(condStr, null);
|
condResult = ValidateCond(condStr, null);
|
||||||
//cms.Enabled = ReplaceHelper.EvalCond(cond);
|
//cms.Enabled = ReplaceHelper.EvalCond(cond);
|
||||||
if (model.ForbiddenDisplay)
|
if (model.ForbiddenDisplay)
|
||||||
|
|||||||
@@ -4212,7 +4212,7 @@ namespace Lskj.Control.Model
|
|||||||
model.ModuleFrameDisplayText = item.Table.Columns.Contains("ModuleFrameDisplayText") ? "1".Equals(item["ModuleFrameDisplayText"] + "") : false;
|
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.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.RememberValue = item.Table.Columns.Contains("RememberValue") ? "1".Equals(item["RememberValue"] + "") : false;
|
||||||
|
model.SumlistField = item.Table.Columns.Contains("SumlistField") ? item["SumlistField"] + "" : "";
|
||||||
|
|
||||||
//为了和工具里和bs里统一
|
//为了和工具里和bs里统一
|
||||||
if (model.FieldType == 42)
|
if (model.FieldType == 42)
|
||||||
|
|||||||
@@ -1604,6 +1604,8 @@ namespace Lskj.Control
|
|||||||
this.pl_top_fix_search.Enabled = this.pl_top_search.Enabled = this.SysModel.SearchEnable;
|
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.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);
|
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);
|
if (this.LeftGridEx != null) this.LeftGridEx.GridView.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(OnGridViewFocusedRowObjectChanged);
|
||||||
this.gcMain.GridView.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor);
|
this.gcMain.GridView.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor);
|
||||||
@@ -1611,7 +1613,7 @@ namespace Lskj.Control
|
|||||||
}
|
}
|
||||||
else
|
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.gcMain.GridView.OptionsBehavior.Editable = false;
|
||||||
this.pl_buttom.Visible = false;
|
this.pl_buttom.Visible = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1284,7 +1284,7 @@ namespace Lskj.Main
|
|||||||
DialogResult result = MessageUtil.Show(ResourceKeys.IsExit, MessageBoxButtons.YesNo);
|
DialogResult result = MessageUtil.Show(ResourceKeys.IsExit, MessageBoxButtons.YesNo);
|
||||||
if (result == DialogResult.Yes)
|
if (result == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
Process[] p = Process.GetProcessesByName("Ls_ERP");
|
Process[] p = Manager.GetApplicationProcesses();
|
||||||
foreach (Process item in p)
|
foreach (Process item in p)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -546,7 +546,7 @@ namespace Lskj.Main
|
|||||||
|
|
||||||
//记录登出日志
|
//记录登出日志
|
||||||
LogUtil.WriteDebug("", "退出软件", "软件退出", "系统登录");
|
LogUtil.WriteDebug("", "退出软件", "软件退出", "系统登录");
|
||||||
Process[] p = Process.GetProcessesByName("Ls_ERP");
|
Process[] p = Manager.GetApplicationProcesses();
|
||||||
foreach (Process item in p)
|
foreach (Process item in p)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Lskj.Main.Hosting
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 旧启动流程与可选新主界面之间的中立扩展点。
|
||||||
|
/// 此接口只使用 .NET Framework 4.0/WinForms 基础类型,不引用 WPF 或 DevExpress 25.2。
|
||||||
|
/// </summary>
|
||||||
|
public interface IExternalMainShell
|
||||||
|
{
|
||||||
|
bool IsOpen { get; }
|
||||||
|
|
||||||
|
DialogResult ShowDialog();
|
||||||
|
|
||||||
|
void RequestRelogin();
|
||||||
|
|
||||||
|
void RequestExit(string message);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using System;
|
||||||
|
using Lskj.Main.Model;
|
||||||
|
|
||||||
|
namespace Lskj.Main.Hosting
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 为独立的新启动程序公开原 Ls_ERP 初始化和登录流程。
|
||||||
|
/// </summary>
|
||||||
|
public static class LegacyApplicationHost
|
||||||
|
{
|
||||||
|
public static void Run(string[] args, IExternalMainShell externalMainShell)
|
||||||
|
{
|
||||||
|
if (externalMainShell == null)
|
||||||
|
throw new ArgumentNullException("externalMainShell");
|
||||||
|
if (Manager.ExternalMainShell != null)
|
||||||
|
throw new InvalidOperationException("旧程序已经由另一个外部主界面托管。");
|
||||||
|
|
||||||
|
Manager.ExternalMainShell = externalMainShell;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Program.RunFromExternalHost(args);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
Manager.ExternalMainShell = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# 外部主界面兼容层
|
||||||
|
|
||||||
|
这个目录只为旧 `.NET Framework 4.0` 启动流程提供一个可选扩展点,不引用 WPF 或 DevExpress 25.2。
|
||||||
|
|
||||||
|
## 默认路线
|
||||||
|
|
||||||
|
直接运行 `Ls_ERP.exe` 时,`Manager.ExternalMainShell` 为 `null`:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Program.Main
|
||||||
|
-> Manager.StartForm
|
||||||
|
-> FrmLogin
|
||||||
|
-> Manager.RunMainForm
|
||||||
|
-> FrmMain
|
||||||
|
```
|
||||||
|
|
||||||
|
这条路线不加载任何 WPF 程序集,并保持 DevExpress WinForms 15.2。
|
||||||
|
|
||||||
|
## 外部宿主路线
|
||||||
|
|
||||||
|
`.NET Framework 4.8` 的独立启动程序通过 `LegacyApplicationHost.Run` 注入 `IExternalMainShell`。旧程序仍负责 CEF、全局异常、配置、数据库、登录和子系统选择,只在 `RunMainForm` 位置回调外部主界面。
|
||||||
|
|
||||||
|
`IExternalMainShell` 当前承担:
|
||||||
|
|
||||||
|
- 同步显示外部主窗口;
|
||||||
|
- 返回普通关闭或重新登录结果;
|
||||||
|
- 处理旧插件发起的重新登录;
|
||||||
|
- 在强制下线时通知外部主窗口退出。
|
||||||
|
|
||||||
|
## 修改规则
|
||||||
|
|
||||||
|
- 此层必须继续可以在 .NET Framework 4.0 下编译。
|
||||||
|
- 禁止引用 `Lserp.Wpf.*`、WPF 类型或 DevExpress 25.2。
|
||||||
|
- 新界面特有实现放在独立 WPF 解决方案的 `Lserp.Wpf.Legacy.WinForms`。
|
||||||
|
- 新增兼容能力时优先扩展中立接口,不要在旧工程中直接调用 WPF。
|
||||||
@@ -276,6 +276,8 @@
|
|||||||
<Compile Include="Model\BitMapHelper.cs" />
|
<Compile Include="Model\BitMapHelper.cs" />
|
||||||
<Compile Include="Model\Manager.cs" />
|
<Compile Include="Model\Manager.cs" />
|
||||||
<Compile Include="Model\winApi.cs" />
|
<Compile Include="Model\winApi.cs" />
|
||||||
|
<Compile Include="Hosting\IExternalMainShell.cs" />
|
||||||
|
<Compile Include="Hosting\LegacyApplicationHost.cs" />
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<EmbeddedResource Include="Control\AwaitScreenControl.resx">
|
<EmbeddedResource Include="Control\AwaitScreenControl.resx">
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ using Lskj.Control;
|
|||||||
using Lskj.Control.Model;
|
using Lskj.Control.Model;
|
||||||
using Lskj.Core;
|
using Lskj.Core;
|
||||||
using Lskj.Data;
|
using Lskj.Data;
|
||||||
|
using Lskj.Main.Hosting;
|
||||||
using Lskj.Model;
|
using Lskj.Model;
|
||||||
using Lskj.Util;
|
using Lskj.Util;
|
||||||
using Lskj.Web.Core.Util;
|
using Lskj.Web.Core.Util;
|
||||||
@@ -55,6 +56,10 @@ namespace Lskj.Main.Model
|
|||||||
public static int isAwaitTime = 10;
|
public static int isAwaitTime = 10;
|
||||||
public static int RefreshTime = 0;
|
public static int RefreshTime = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 由外部启动程序提供的可选主界面。默认为 null,旧 Ls_ERP.exe 仍打开 FrmMain。
|
||||||
|
/// </summary>
|
||||||
|
public static IExternalMainShell ExternalMainShell { get; internal set; }
|
||||||
|
/// <summary>
|
||||||
/// 默认下载地址
|
/// 默认下载地址
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static string filePath = string.Empty;
|
private static string filePath = string.Empty;
|
||||||
@@ -190,7 +195,12 @@ namespace Lskj.Main.Model
|
|||||||
if (isStart)
|
if (isStart)
|
||||||
{
|
{
|
||||||
// 直接进入主界面
|
// 直接进入主界面
|
||||||
RunMainForm();
|
result = RunMainForm();
|
||||||
|
if (result == DialogResult.Retry)
|
||||||
|
{
|
||||||
|
StartForm();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (ERPInfo.Instance.SubMenuCount > 1)
|
if (ERPInfo.Instance.SubMenuCount > 1)
|
||||||
{
|
{
|
||||||
ReStartMain();
|
ReStartMain();
|
||||||
@@ -686,6 +696,10 @@ namespace Lskj.Main.Model
|
|||||||
/// <returns>DialogResult.</returns>
|
/// <returns>DialogResult.</returns>
|
||||||
private static DialogResult RunMainForm()
|
private static DialogResult RunMainForm()
|
||||||
{
|
{
|
||||||
|
IExternalMainShell externalMainShell = ExternalMainShell;
|
||||||
|
if (externalMainShell != null)
|
||||||
|
return externalMainShell.ShowDialog();
|
||||||
|
|
||||||
_frmMain = new FrmMain();
|
_frmMain = new FrmMain();
|
||||||
return _frmMain.ShowDialog();
|
return _frmMain.ShowDialog();
|
||||||
}
|
}
|
||||||
@@ -909,6 +923,11 @@ namespace Lskj.Main.Model
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
else if (ExternalMainShell != null && ExternalMainShell.IsOpen)
|
||||||
|
{
|
||||||
|
ExternalMainShell.RequestExit($"当前用户在另一电脑登录\r\nClientIp:{clientip}\r\nMacAdress:{loginMacAdress}\r\n当前系统即将关闭");
|
||||||
|
isClose = true;
|
||||||
|
}
|
||||||
else if (_frmMain != null && _frmMain.Visible == true)
|
else if (_frmMain != null && _frmMain.Visible == true)
|
||||||
{
|
{
|
||||||
_frmMain.Invoke(new Action(() =>
|
_frmMain.Invoke(new Action(() =>
|
||||||
@@ -953,7 +972,7 @@ namespace Lskj.Main.Model
|
|||||||
}
|
}
|
||||||
//记录登出日志
|
//记录登出日志
|
||||||
LogUtil.WriteDebug("", "退出软件", "软件退出", "系统登录");
|
LogUtil.WriteDebug("", "退出软件", "软件退出", "系统登录");
|
||||||
Process[] p = Process.GetProcessesByName("Ls_ERP");
|
Process[] p = GetApplicationProcesses();
|
||||||
foreach (Process item in p)
|
foreach (Process item in p)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -1107,6 +1126,12 @@ namespace Lskj.Main.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static void ReLogin()
|
public static void ReLogin()
|
||||||
{
|
{
|
||||||
|
IExternalMainShell externalMainShell = ExternalMainShell;
|
||||||
|
if (externalMainShell != null && externalMainShell.IsOpen)
|
||||||
|
{
|
||||||
|
externalMainShell.RequestRelogin();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (_frmMain != null)
|
if (_frmMain != null)
|
||||||
{
|
{
|
||||||
if (ERPInfo.Instance.WatermarkForm != null)
|
if (ERPInfo.Instance.WatermarkForm != null)
|
||||||
@@ -1121,5 +1146,16 @@ namespace Lskj.Main.Model
|
|||||||
StartForm();
|
StartForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 返回当前启动路线需要退出的主进程。
|
||||||
|
/// 旧入口保持原有 Ls_ERP 进程名语义,外部宿主只退出当前 WPF 进程。
|
||||||
|
/// </summary>
|
||||||
|
internal static Process[] GetApplicationProcesses()
|
||||||
|
{
|
||||||
|
return ExternalMainShell == null
|
||||||
|
? Process.GetProcessesByName("Ls_ERP")
|
||||||
|
: new[] { Process.GetCurrentProcess() };
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,6 +92,14 @@ namespace Lskj.Main
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 允许 .NET Framework 4.8 外部宿主复用原程序的 CEF、皮肤、异常、注册和登录初始化。
|
||||||
|
/// 正常启动 Ls_ERP.exe 仍由 Main 直接进入,不经过此方法。
|
||||||
|
/// </summary>
|
||||||
|
internal static void RunFromExternalHost(string[] args)
|
||||||
|
{
|
||||||
|
Main(args ?? new string[0]);
|
||||||
|
}
|
||||||
#region 浏览器处理类
|
#region 浏览器处理类
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <para>说明:浏览器处理类</para>
|
/// <para>说明:浏览器处理类</para>
|
||||||
|
|||||||
@@ -467,6 +467,14 @@ namespace Lskj.Model
|
|||||||
/// 单据横向模式
|
/// 单据横向模式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HorizontalMode;
|
public bool HorizontalMode;
|
||||||
|
/// <summary>
|
||||||
|
/// 树表格老版节点号模式
|
||||||
|
/// </summary>
|
||||||
|
public bool OldNodeRules;
|
||||||
|
/// <summary>
|
||||||
|
/// 新版树节点位数(默认2位,最小2位)
|
||||||
|
/// </summary>
|
||||||
|
public int TreeNumberNodes;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -575,6 +583,8 @@ namespace Lskj.Model
|
|||||||
this.SourceMainPushPullHide = rowItem.Table.Columns.Contains("SourceMainPushPullHide") ? "1".Equals(rowItem["SourceMainPushPullHide"] + "") : false;
|
this.SourceMainPushPullHide = rowItem.Table.Columns.Contains("SourceMainPushPullHide") ? "1".Equals(rowItem["SourceMainPushPullHide"] + "") : false;
|
||||||
this.SelectSourceColor = rowItem.Table.Columns.Contains("SelectSourceColor") ? rowItem["SelectSourceColor"] + "" : "";
|
this.SelectSourceColor = rowItem.Table.Columns.Contains("SelectSourceColor") ? rowItem["SelectSourceColor"] + "" : "";
|
||||||
this.HorizontalMode = rowItem.Table.Columns.Contains("HorizontalMode") ? "1".Equals(rowItem["HorizontalMode"] + "") : false;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2190,6 +2190,8 @@ namespace Lskj.PubBill
|
|||||||
}
|
}
|
||||||
gridDetail.SetGridRowColors(dtBaseGridRowColors);
|
gridDetail.SetGridRowColors(dtBaseGridRowColors);
|
||||||
gridDetail.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridDetailRightMenuCallback);
|
gridDetail.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridDetailRightMenuCallback);
|
||||||
|
gridDetail.gridViewRightMenu.OnBeforeHandleParamsCallback += OnBeforeHandleParamsCallback;
|
||||||
|
|
||||||
gridDetail.Parent = tabDetail;
|
gridDetail.Parent = tabDetail;
|
||||||
gridDetail.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
gridDetail.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
|
||||||
@@ -2232,6 +2234,9 @@ namespace Lskj.PubBill
|
|||||||
}
|
}
|
||||||
gridDetail.SetGridRowColors(dtBaseGridRowColors);
|
gridDetail.SetGridRowColors(dtBaseGridRowColors);
|
||||||
gridDetail.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridDetailRightMenuCallback);
|
gridDetail.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridDetailRightMenuCallback);
|
||||||
|
|
||||||
|
gridDetail.gridViewRightMenu.OnBeforeHandleParamsCallback += OnBeforeHandleParamsCallback;
|
||||||
|
|
||||||
if (BillModel.IsBillDetailCheck == 0)
|
if (BillModel.IsBillDetailCheck == 0)
|
||||||
{
|
{
|
||||||
if (model.MainDetailsAddType != "2") gridDetail.GridView.DoubleClick += new EventHandler(OnGridDetailDoubleClick);
|
if (model.MainDetailsAddType != "2") gridDetail.GridView.DoubleClick += new EventHandler(OnGridDetailDoubleClick);
|
||||||
@@ -2442,6 +2447,8 @@ namespace Lskj.PubBill
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单据来源拖拽到主表明细中(树表格拖拽到树表格)
|
/// 单据来源拖拽到主表明细中(树表格拖拽到树表格)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -3882,7 +3889,10 @@ namespace Lskj.PubBill
|
|||||||
|
|
||||||
if (!string.IsNullOrEmpty(checkStrs))
|
if (!string.IsNullOrEmpty(checkStrs))
|
||||||
checkStrs = " and SpeciesNo in (" + checkStrs.TrimEnd(',') + ")";
|
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
|
try
|
||||||
{
|
{
|
||||||
@@ -5172,6 +5182,8 @@ namespace Lskj.PubBill
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DataTable detailTable = this.gcMain.GridControl.DataSourceTable().TrimDeleteRows();
|
||||||
|
|
||||||
StringBuilder fieldBuilder = new StringBuilder();
|
StringBuilder fieldBuilder = new StringBuilder();
|
||||||
StringBuilder valueBuilder = new StringBuilder();
|
StringBuilder valueBuilder = new StringBuilder();
|
||||||
|
|
||||||
@@ -5196,6 +5208,14 @@ namespace Lskj.PubBill
|
|||||||
fieldValue = fieldValue.Trim();
|
fieldValue = fieldValue.Trim();
|
||||||
if (fieldValue == "****") continue;
|
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);
|
errorMessage = errorMessage + DatabaseFormatJudgment.SaveOrModifyBalidation(DetailedProperties, model, fieldValue);
|
||||||
if (string.IsNullOrEmpty(fieldValue) && model.Isintordecimal) fieldValue = "0";//数值保存时为空的话默认保存为0;
|
if (string.IsNullOrEmpty(fieldValue) && model.Isintordecimal) fieldValue = "0";//数值保存时为空的话默认保存为0;
|
||||||
|
|
||||||
@@ -5230,6 +5250,7 @@ namespace Lskj.PubBill
|
|||||||
{
|
{
|
||||||
StringBuilder updateBuilder = new StringBuilder();
|
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 = 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);
|
DataTable DetailedProperties = MainImpl.GetDatabaseProperty(BillModel.MasterTable);
|
||||||
@@ -5255,6 +5276,14 @@ namespace Lskj.PubBill
|
|||||||
fieldValue = fieldValue.Trim();
|
fieldValue = fieldValue.Trim();
|
||||||
if (fieldValue == "****") continue;
|
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);
|
errorMessage = errorMessage + DatabaseFormatJudgment.SaveOrModifyBalidation(DetailedProperties, model, fieldValue);
|
||||||
if (string.IsNullOrEmpty(fieldValue) && model.Isintordecimal) fieldValue = "0";//数值保存时为空的话默认保存为0;
|
if (string.IsNullOrEmpty(fieldValue) && model.Isintordecimal) fieldValue = "0";//数值保存时为空的话默认保存为0;
|
||||||
|
|
||||||
@@ -6789,6 +6818,60 @@ namespace Lskj.PubBill
|
|||||||
this.RefreshSourceDetail(tabPage.Tag as BillSourceUnionModel);
|
this.RefreshSourceDetail(tabPage.Tag as BillSourceUnionModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单据来源明细右键替换参数前执行
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 底部明细右键后刷新
|
/// 底部明细右键后刷新
|
||||||
|
|||||||
Reference in New Issue
Block a user