diff --git a/插件库/Lskj.PubBomAlter/FrmMain.Designer.cs b/插件库/Lskj.PubBomAlter/FrmMain.Designer.cs
index c2f0b1d..a23d714 100644
--- a/插件库/Lskj.PubBomAlter/FrmMain.Designer.cs
+++ b/插件库/Lskj.PubBomAlter/FrmMain.Designer.cs
@@ -33,8 +33,8 @@ namespace Lskj.PubBomAlter
this.splitRightContainer = new DevExpress.XtraEditors.SplitContainerControl();
this.splitControlContainer = new DevExpress.XtraEditors.SplitContainerControl();
this.topPanel = new DevExpress.XtraEditors.PanelControl();
- this.treeGridControlEx = new Lskj.Control.TreeGridControlEx();
this.pl_buttom = new DevExpress.XtraEditors.PanelControl();
+ this.btnApply = new DevExpress.XtraEditors.SimpleButton();
this.btnSave = new DevExpress.XtraEditors.SimpleButton();
this.pl_top = new DevExpress.XtraEditors.PanelControl();
this.pl_top_search = new DevExpress.XtraEditors.PanelControl();
@@ -49,6 +49,7 @@ namespace Lskj.PubBomAlter
this.btnPmsSave = new DevExpress.XtraEditors.SimpleButton();
this.rightDetailPanel = new System.Windows.Forms.Panel();
this.gcDetailControlEx = new Lskj.Control.GridControlEx();
+ this.treeGridControlEx = new Lskj.Control.TreeGridControlEx();
((System.ComponentModel.ISupportInitialize)(this.splitRightContainer)).BeginInit();
this.splitRightContainer.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitControlContainer)).BeginInit();
@@ -130,21 +131,11 @@ namespace Lskj.PubBomAlter
this.topPanel.Size = new System.Drawing.Size(380, 566);
this.topPanel.TabIndex = 21;
//
- // treeGridControlEx
- //
- this.treeGridControlEx.AdapterObj = null;
- this.treeGridControlEx.Dock = System.Windows.Forms.DockStyle.Fill;
- this.treeGridControlEx.Location = new System.Drawing.Point(2, 29);
- this.treeGridControlEx.Margin = new System.Windows.Forms.Padding(4);
- this.treeGridControlEx.Name = "treeGridControlEx";
- this.treeGridControlEx.SiftEnumObj = Lskj.Control.GridControlEx.HeaderSiftEnum.Sum;
- this.treeGridControlEx.Size = new System.Drawing.Size(376, 500);
- this.treeGridControlEx.TabIndex = 29;
- //
// pl_buttom
//
this.pl_buttom.Appearance.BackColor = System.Drawing.Color.Transparent;
this.pl_buttom.Appearance.Options.UseBackColor = true;
+ this.pl_buttom.Controls.Add(this.btnApply);
this.pl_buttom.Controls.Add(this.btnSave);
this.pl_buttom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pl_buttom.Location = new System.Drawing.Point(2, 529);
@@ -153,6 +144,17 @@ namespace Lskj.PubBomAlter
this.pl_buttom.Size = new System.Drawing.Size(376, 35);
this.pl_buttom.TabIndex = 28;
//
+ // btnApply
+ //
+ this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnApply.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnApply.Appearance.Options.UseFont = true;
+ this.btnApply.Location = new System.Drawing.Point(214, 5);
+ this.btnApply.Name = "btnApply";
+ this.btnApply.Size = new System.Drawing.Size(80, 26);
+ this.btnApply.TabIndex = 41;
+ this.btnApply.Text = "提交审批(&A)";
+ //
// btnSave
//
this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -310,6 +312,17 @@ namespace Lskj.PubBomAlter
this.gcDetailControlEx.Size = new System.Drawing.Size(411, 566);
this.gcDetailControlEx.TabIndex = 52;
//
+ // treeGridControlEx
+ //
+ this.treeGridControlEx.AdapterObj = null;
+ this.treeGridControlEx.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.treeGridControlEx.Location = new System.Drawing.Point(2, 29);
+ this.treeGridControlEx.Margin = new System.Windows.Forms.Padding(4);
+ this.treeGridControlEx.Name = "treeGridControlEx";
+ this.treeGridControlEx.SiftEnumObj = Lskj.Control.GridControlEx.HeaderSiftEnum.Sum;
+ this.treeGridControlEx.Size = new System.Drawing.Size(376, 500);
+ this.treeGridControlEx.TabIndex = 29;
+ //
// FrmMain
//
this.Appearance.BackColor = System.Drawing.SystemColors.Control;
@@ -352,22 +365,4 @@ namespace Lskj.PubBomAlter
private DevExpress.XtraEditors.SplitContainerControl splitRightContainer;
private DevExpress.XtraEditors.SplitContainerControl splitControlContainer;
private DevExpress.XtraEditors.PanelControl topPanel;
- private DevExpress.XtraEditors.PanelControl pl_Bottom;
- private System.Windows.Forms.Panel rightDetailPanel;
- private DevExpress.XtraEditors.PanelControl pl_top;
- private DevExpress.XtraEditors.PanelControl pl_top_search;
- private DevExpress.XtraEditors.PanelControl pl_top_fix_search;
- private System.Windows.Forms.ComboBox cbField;
- private DevExpress.XtraEditors.SimpleButton btnFixSearch;
- private System.Windows.Forms.TextBox txtFixKey;
- private System.Windows.Forms.Label label1;
- private Control.TreeGridControlEx treeGridControlEx;
- private DevExpress.XtraEditors.PanelControl pl_buttom;
- private DevExpress.XtraEditors.SimpleButton btnSave;
- private Control.GridControlEx gcMainControlEx;
- private DevExpress.XtraEditors.PanelControl panelControl1;
- private DevExpress.XtraEditors.SimpleButton btnPmsSave;
- private Control.GridControlEx gcDetailControlEx;
- }
-}
-
+ private DevExpress.XtraEditors.PanelC
\ No newline at end of file
diff --git a/插件库/Lskj.PubBomAlter/FrmMain.cs b/插件库/Lskj.PubBomAlter/FrmMain.cs
index 2e80175..1f1e570 100644
--- a/插件库/Lskj.PubBomAlter/FrmMain.cs
+++ b/插件库/Lskj.PubBomAlter/FrmMain.cs
@@ -42,6 +42,10 @@ namespace Lskj.PubBomAlter
///
public MyControl SearchObj;
///
+ /// 数据源绑定完成后
+ ///
+ public event EventHandler OnAfterDataSourceCallback;
+ ///
/// 上方控件面板
///
private XtraScrollableControl MainControlPanel = new XtraScrollableControl();
@@ -58,6 +62,14 @@ namespace Lskj.PubBomAlter
///
private ModuleModel sysModel;
///
+ /// 列数据源
+ ///
+ private DataTable _gridColumns;
+ ///
+ /// 无需更新的列
+ ///
+ private string[] _disUpdateColumns = { "id" };
+ ///
/// 明细表
///
private DataTable detailsTab;
@@ -237,7 +249,7 @@ namespace Lskj.PubBomAlter
{
try
{
-
+ SearchObj.SearchGrid();
}
catch (Exception ex)
{
@@ -322,6 +334,7 @@ namespace Lskj.PubBomAlter
sysModel.PrefixKey = BaseImpl.GetColumnPrefix(sysModel.MenuTable);//获取列前缀
SearchObj = new MyControl(sysModel.MenuSql, TreeGridObj);//替换sql语句中的bmp字段
SearchObj.OnDataSourceBindCallBack += OnSearchObjDataSourceBindCallBack;
+ SearchObj.OnSearchAfterCallBack += OnSearchObjSearchAfterCallBack;
bool fixedQuery = queryTable == null || queryTable.Rows.Count == 0;
if (fixedQuery)
{
@@ -340,8 +353,8 @@ namespace Lskj.PubBomAlter
SearchObj.OtherParams = BomAlterModel.OtherParams();
pl_top.Height = SearchObj.InitSearchControl(queryTable, pl_top_search);
}
- DataTable gridColumns = BaseModuleImpl.GetBaseGridColumns(BomAlterModel.ModuleCode);
- TreeGridObj.SetEditColumns(gridColumns, GridCustomColumnStruct.BaseMainGridView + sysModel.FormKey);
+ _gridColumns = BaseModuleImpl.GetBaseGridColumns(BomAlterModel.ModuleCode);
+ TreeGridObj.SetEditColumns(_gridColumns, GridCustomColumnStruct.BaseMainGridView + sysModel.FormKey);
TreeGridObj.SetGridRowColors(BaseModuleImpl.GetBaseGridRowColors(BomAlterModel.ModuleCode));
TreeGridObj.TreeListObj.MouseClick += OnTreeListObjMouseClick;
DataTable rightMenusTable = BaseModuleImpl.GetBaseGridRightMenus(BomAlterModel.ModuleCode);
@@ -490,6 +503,7 @@ namespace Lskj.PubBomAlter
//this.pl_scrollBottom.Click += OnScrollableControlClick;
this.btnPmsSave.Click += OnBtnPmsSaveClick;
this.btnSave.Click += OnBtnSaveClick;
+ this.btnApply.Click += OnBtnApplyClick;
this.gcDetailControlEx.GridView.DoubleClick += OnGcDetailGridViewDoubleClick;
this.gcDetailControlEx.GridView.SelectionChanged += OnGridViewSelectionChanged;
}
@@ -502,6 +516,7 @@ namespace Lskj.PubBomAlter
{
try
{
+ this.OnAfterDataSourceCallback -= OnAfterDataSource;
gcMainControlEx.GridControl.DataSource = null;
TreeList treeListGrid = sender as TreeList;
Point gcPoint = treeListGrid.PointToScreen(treeListGrid.Location);
@@ -514,8 +529,8 @@ namespace Lskj.PubBomAlter
if (dataRow.Table.Columns.Contains("Plm_lmb_SmartBmFa"))
{
string projectId = dataRow["Plm_lmb_SmartBmFa"] + "";
+ this.OnAfterDataSourceCallback += OnAfterDataSource;
SetDynamicControl(projectId);
- SetAllControlValue(dataRow);
}
}
}
@@ -525,6 +540,22 @@ namespace Lskj.PubBomAlter
}
}
///
+ /// 数据源加载完成后事件
+ ///
+ ///
+ ///
+ private void OnAfterDataSource(object sender, EventArgs e)
+ {
+ WaitForm.ShowForm();
+ this.Invoke(new Action(() =>
+ {
+ TreeListNode focusedNode = TreeGridObj.TreeListObj.FocusedNode;
+ DataRow dataRow = (TreeGridObj.TreeListObj.GetDataRecordByNode(focusedNode) as DataRowView).Row;
+ SetAllControlValue(dataRow);
+ }));
+ WaitForm.HideForm();
+ }
+ ///
/// 更改菜单点击
///
///
@@ -910,6 +941,10 @@ namespace Lskj.PubBomAlter
}));
}
}
+ if (OnAfterDataSourceCallback != null)
+ {
+ OnAfterDataSourceCallback(null, null);
+ }
}
catch (Exception)
{
@@ -1302,12 +1337,49 @@ namespace Lskj.PubBomAlter
TopControlObj.SetAllControlValue(BomAlterModel.MaintabFocusedRow);
}
List modelControls = this.MainControlPanel.Controls.Cast().Where(n => !string.IsNullOrEmpty((n.Tag as SysSetModel).DbName)).OrderBy(n => (n.Tag as SysSetModel).OrderId).ToList();
- foreach (BaseUserControl item in modelControls)
+ if (selectSource == null)
{
- SysSetModel sysSetModel = item.Tag as SysSetModel;
- string value = selectSource.Table.Columns.Contains(sysSetModel.DbName) ? selectSource[sysSetModel.DbName] + "" : "";
- item.EditText = value;
+ primaryVlaue = dataRow["plm_lmb_id"] + "";
+ selectSource = BaseImpl.GetDataRowResult(string.Format("select * from Plm_MbomListTab where plm_lmb_id = '{0}'", primaryVlaue));
+ foreach (BaseUserControl item in modelControls)
+ {
+ SysSetModel sysSetModel = item.Tag as SysSetModel;
+ string value = "";
+ if (selectSource != null)
+ {
+ value = selectSource.Table.Columns.Contains(sysSetModel.DbName) ? selectSource[sysSetModel.DbName] + "" : "";
+ }
+ item.EditText = value;
+ }
}
+ else
+ {
+ foreach (BaseUserControl item in modelControls)
+ {
+ SysSetModel sysSetModel = item.Tag as SysSetModel;
+ string value = "";
+ if (selectSource != null)
+ {
+ value = selectSource.Table.Columns.Contains(sysSetModel.DbName) ? selectSource[sysSetModel.DbName] + "" : "";
+ }
+ item.EditText = value;
+ }
+ }
+ //if (!string.IsNullOrEmpty(lastValues))
+ //{
+ // string[] lastValueArray = lastValues.Split('\\');
+ // for (int i = 0; i < modelControls.Count; i++)
+ // {
+ // if (i == 0)
+ // {
+ // continue;
+ // }
+ // int index = i - 1;
+ // string value = index >= 0 && lastValueArray.Length > index ? lastValueArray[index] : "";
+ // BaseUserControl item = modelControls[i];
+ // item.EditText = value;
+ // }
+ //}
}
///
/// 说明:查找控件(无需要传入txt_)
@@ -1657,6 +1729,144 @@ namespace Lskj.PubBomAlter
/// 保存按钮
///
private void OnBtnSaveClick(object sender, EventArgs e)
+ {
+ TreeGridControlEx treeMain = TreeGridObj;
+ string tableName = this.sysModel.MenuTable;
+ if (string.IsNullOrEmpty(tableName))
+ {
+ MessageUtil.Show(ResourceKeys.MenuTableNameIsNull);
+ return;
+ }
+ List mList = new List();
+ DataRow[] modifiedRows = (treeMain.TreeListObj.DataSource as DataTable)
+ .Rows
+ .Cast()
+ .Where(x => x.RowState == DataRowState.Modified || x.RowState == DataRowState.Added)
+ .ToArray();
+
+ if (modifiedRows == null || modifiedRows.Length == 0)
+ {
+ MessageUtil.Show(ResourceKeys.UnUpdateData);
+ return;
+ }
+ else
+ {
+ string _parmaryKey = BaseImpl.GetBasePrimaryKey(this.BomAlterModel.ModuleCode);//获取主键
+ DataColumnCollection columns = BaseImpl.GetTableColumns(tableName).Columns;
+ foreach (DataRow row in modifiedRows)
+ {
+ string updateSql = "update {0} set {1} where {2}='{3}';";
+ string insertSql = "insert into {0}({1}) values({2});";
+ string updateFields = string.Empty;
+ string insertFields = string.Empty;
+ string insertValues = string.Empty;
+ BaseSaveModel model = new BaseSaveModel()
+ {
+ MenuCode = this.BomAlterModel.ModuleCode,
+ TableName = tableName,
+ KeyField = _parmaryKey,
+ NewVer = this.sysModel.NewVer
+ };
+ foreach (DataColumn col in columns)
+ {
+ // 区分大小写匹配列
+ DataRow hasContainRow = _gridColumns.Rows.Cast().FirstOrDefault(x => x["fieldname"] + "" == col.ColumnName);
+ if (hasContainRow != null && col.ColumnName != _parmaryKey && !_disUpdateColumns.Contains(col.ColumnName))
+ {
+ if (row.RowState == DataRowState.Modified && string.IsNullOrEmpty(sysModel.CustomColumnSQL))
+ {
+ if ((col.DataType == typeof(DateTime)) && (row[col.ColumnName] + "" == ""))
+ {
+ updateFields += string.Format("[{0}]=null,", col.ColumnName);
+ }
+ else
+ {
+ if (col.DataType == typeof(Decimal) && string.IsNullOrWhiteSpace((row[col.ColumnName] + "").Replace("'", "''")))
+ {
+ updateFields += string.Format("[{0}]='{1}',", col.ColumnName, 0);
+ }
+ else
+ {
+ updateFields += string.Format("[{0}]='{1}',", col.ColumnName, (row[col.ColumnName] + "").Replace("'", "''"));
+ }
+
+ }
+ }
+ else if (row.RowState == DataRowState.Added || (row.RowState == DataRowState.Modified && !string.IsNullOrEmpty(sysModel.CustomColumnSQL)))
+ {
+ // 动态生成列,保存时默认全部为新增
+ string fieldValue = (row[col.ColumnName] + "").Replace("'", "''");
+ insertFields += "[" + col.ColumnName + "],";
+ if (!string.IsNullOrWhiteSpace(fieldValue))
+ {
+ insertValues += col.DataType == typeof(DateTime) ? "'" + Convert.ToDateTime(fieldValue).ToString("yyyy-MM-dd HH:mm:ss") + "'," : "'" + fieldValue + "',";
+ }
+ else
+ {
+ if (col.DataType == typeof(Decimal) || col.DataType == typeof(Int32))
+ insertValues += "0,";
+ else if (col.DataType == typeof(DateTime))
+ insertValues += "NULL,";
+ else
+ insertValues += "'',";
+ }
+ }
+ }
+ }
+ updateFields = updateFields.TrimEnd(',');
+ insertFields = insertFields.TrimEnd(',');
+ insertValues = insertValues.TrimEnd(',');
+
+ if (!string.IsNullOrEmpty(updateFields))
+ {
+ model.FieldValue = row[_parmaryKey] + "";
+ model.BaseSaveType = SaveType.Update;
+ model.BaseSql = string.Format(updateSql, tableName, updateFields, _parmaryKey, row[_parmaryKey]);
+ }
+ if (!string.IsNullOrEmpty(insertFields))
+ {
+ model.BaseSaveType = SaveType.Add;
+ model.FieldValue = row[_parmaryKey] + "";
+ model.BaseSql = string.Format(insertSql, tableName, insertFields, insertValues);
+ }
+ mList.Add(model);
+ }
+ try
+ {
+ // 批量保存数据
+ if (BaseModuleImpl.SaveBaseGridData(mList))
+ {
+ (treeMain.TreeListObj.DataSource as DataTable).AcceptChanges();
+ if (this.SearchObj != null)
+ {
+ this.SearchObj.SearchLastGrid();
+ }
+ MessageUtil.Show(ResourceKeys.SaveSuccess);
+ }
+ else
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.Append("失败列表\r\n");
+ foreach (BaseSaveModel item in mList)
+ {
+ if (!string.IsNullOrEmpty(item.FaultMsg))
+ builder.Append("原因:" + item.FaultMsg + "\r\n"); ;
+ }
+ LogHelper.Instance.WriteLog(builder.ToString());
+ MessageUtil.Show(builder.ToString());
+ }
+ }
+ catch (Exception ex)
+ {
+ string Message = ErrorMessage.PromptErrorMessage(ex);
+ MessageUtil.Show(Message, ex.Message);
+ }
+ }
+ }
+ ///
+ /// 提交按钮
+ ///
+ private void OnBtnApplyClick(object sender, EventArgs e)
{
TreeListNode focusedNode = treeGridControlEx.TreeListObj.FocusedNode;
DataRow focusedRow = (treeGridControlEx.TreeListObj.GetDataRecordByNode(focusedNode) as DataRowView).Row;
@@ -1765,5 +1975,7 @@ namespace Lskj.PubBomAlter
SearchObj.SearchGrid();
}
}
- }
-}
+ ///
+ /// 查询后事件
+ ///
+ /// <
\ No newline at end of file
diff --git a/插件库/Lskj.PubBomAlter/Lskj.PubBomAlter.csproj b/插件库/Lskj.PubBomAlter/Lskj.PubBomAlter.csproj
index e635457..0038878 100644
--- a/插件库/Lskj.PubBomAlter/Lskj.PubBomAlter.csproj
+++ b/插件库/Lskj.PubBomAlter/Lskj.PubBomAlter.csproj
@@ -73,7 +73,6 @@
FrmMain.cs
-
ResXFileCodeGenerator
Resources.Designer.cs