SVN-Revision: r310
This commit is contained in:
tdx
2025-03-10 02:19:59 +00:00
parent 2b01c78a5a
commit ba650c5c63
3 changed files with 248 additions and 42 deletions
+26 -31
View File
@@ -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
+222 -10
View File
@@ -42,6 +42,10 @@ namespace Lskj.PubBomAlter
/// </summary>
public MyControl SearchObj;
/// <summary>
/// 数据源绑定完成后
/// </summary>
public event EventHandler OnAfterDataSourceCallback;
/// <summary>
/// 上方控件面板
/// </summary>
private XtraScrollableControl MainControlPanel = new XtraScrollableControl();
@@ -58,6 +62,14 @@ namespace Lskj.PubBomAlter
/// </summary>
private ModuleModel sysModel;
/// <summary>
/// 列数据源
/// </summary>
private DataTable _gridColumns;
/// <summary>
/// 无需更新的列
/// </summary>
private string[] _disUpdateColumns = { "id" };
/// <summary>
/// 明细表
/// </summary>
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
}
}
/// <summary>
/// 数据源加载完成后事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
/// <summary>
/// 更改菜单点击
/// </summary>
/// <param name="sender"></param>
@@ -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<BaseUserControl> modelControls = this.MainControlPanel.Controls.Cast<BaseUserControl>().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;
// }
//}
}
/// <summary>
/// <para>说明:查找控件(无需要传入txt_)</para>
@@ -1657,6 +1729,144 @@ namespace Lskj.PubBomAlter
/// 保存按钮
/// </summary>
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<BaseSaveModel> mList = new List<BaseSaveModel>();
DataRow[] modifiedRows = (treeMain.TreeListObj.DataSource as DataTable)
.Rows
.Cast<DataRow>()
.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<DataRow>().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);
}
}
}
/// <summary>
/// 提交按钮
/// </summary>
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();
}
}
}
}
/// <summary>
/// 查询后事件
/// </summary>
/// <
@@ -73,7 +73,6 @@
<EmbeddedResource Include="FrmMain.resx">
<DependentUpon>FrmMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>