ab56a9bcf7
SVN-Revision: r240
338 lines
15 KiB
C#
338 lines
15 KiB
C#
using DevExpress.XtraGrid.Columns;
|
|
using DevExpress.XtraGrid.Views.Grid;
|
|
using Lskj.Business.Impl;
|
|
using Lskj.Control.Model;
|
|
using Lskj.Core;
|
|
using Lskj.Data;
|
|
using Lskj.Model;
|
|
using Lskj.Util;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Lskj.Control
|
|
{
|
|
public partial class FrmSetExport : Form
|
|
{
|
|
#region 公共变量
|
|
/// <summary>
|
|
/// 外部表格
|
|
/// </summary>
|
|
public GridControlEx SourceGridEx;
|
|
/// <summary>
|
|
/// CustomColumKey
|
|
/// </summary>
|
|
public string CustomColumKey = string.Empty;
|
|
#endregion
|
|
#region 私有变量
|
|
/// <summary>
|
|
/// 左侧数据源
|
|
/// </summary>
|
|
private DataTable leftDataSource = new DataTable();
|
|
/// <summary>
|
|
/// 右侧数据源
|
|
/// </summary>
|
|
private DataTable rightDataSource = new DataTable();
|
|
#endregion
|
|
|
|
public FrmSetExport(GridControlEx sourceGrid)
|
|
{
|
|
InitializeComponent();
|
|
this.SourceGridEx = sourceGrid;
|
|
this.Load += new EventHandler(OnFrmSetExport_Load);
|
|
}
|
|
#region 事件
|
|
/// <summary>
|
|
/// 窗体初始化
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnFrmSetExport_Load(object sender, EventArgs e)
|
|
{
|
|
InitRightGridColumns();
|
|
InitRightGridData();
|
|
InitLeftGridColumns();
|
|
InitLeftGridData();
|
|
GridDragGrid dragLeftGrid = new GridDragGrid(this.leftGrid.GridView, this.rightGrid.GridView);
|
|
dragLeftGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragMainGridCompleted);
|
|
GridDragGrid dragRightGrid = new GridDragGrid(this.rightGrid.GridView, this.leftGrid.GridView);
|
|
dragRightGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragMainGridCompleted);
|
|
this.leftGrid.GridView.DoubleClick += new EventHandler(OnGridView_DoubleClick);
|
|
this.rightGrid.GridView.DoubleClick += new EventHandler(OnGridView_DoubleClick);
|
|
this.saveBtn.Click += new EventHandler(OnSaveBtn_Click);
|
|
this.SizeChanged += new EventHandler(OnFrmSetExport_SizeChanged);
|
|
}
|
|
/// <summary>
|
|
/// 拖拽完成时
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnDragMainGridCompleted(object sender, GridDragGridArgs e)
|
|
{
|
|
if (e.SourceGridViewObj == this.leftGrid.GridView)
|
|
{
|
|
foreach (DataRow selectRow in e.GridViewSelectRows)
|
|
{
|
|
DataRow newRow = this.rightDataSource.NewRow();
|
|
newRow.ItemArray = selectRow.ItemArray;
|
|
this.rightDataSource.Rows.Add(newRow);
|
|
this.leftDataSource.Rows.Remove(selectRow);
|
|
}
|
|
}
|
|
else if (e.SourceGridViewObj == this.rightGrid.GridView)
|
|
{
|
|
foreach (DataRow selectRow in e.GridViewSelectRows)
|
|
{
|
|
DataRow newRow = this.leftDataSource.NewRow();
|
|
newRow.ItemArray = selectRow.ItemArray;
|
|
this.leftDataSource.Rows.Add(newRow);
|
|
this.rightDataSource.Rows.Remove(selectRow);
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 双击行移动数据
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnGridView_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
GridView gridView = (GridView)sender;
|
|
int[] selectRowsIndex = gridView.GetSelectedRows();
|
|
if (gridView == this.leftGrid.GridView)
|
|
{
|
|
foreach (int index in selectRowsIndex)
|
|
{
|
|
DataRow selectRow = gridView.GetDataRow(index);
|
|
DataRow newRow = this.rightDataSource.NewRow();
|
|
newRow.ItemArray = selectRow.ItemArray;
|
|
this.rightDataSource.Rows.Add(newRow);
|
|
this.leftDataSource.Rows.Remove(selectRow);
|
|
}
|
|
}
|
|
else if (gridView == this.rightGrid.GridView)
|
|
{
|
|
foreach (int index in selectRowsIndex)
|
|
{
|
|
DataRow selectRow = gridView.GetDataRow(index);
|
|
DataRow newRow = this.leftDataSource.NewRow();
|
|
newRow.ItemArray = selectRow.ItemArray;
|
|
this.leftDataSource.Rows.Add(newRow);
|
|
this.rightDataSource.Rows.Remove(selectRow);
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 窗体大小改变时
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnFrmSetExport_SizeChanged(object sender, EventArgs e)
|
|
{
|
|
this.leftGroup.Width = this.Width / 2;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存按钮点击
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnSaveBtn_Click(object sender, EventArgs e)
|
|
{
|
|
DataRow rowItem = null;
|
|
bool success = BaseImpl.HasExistsDataRow(ResourceKeys.SettingExportTableName, "formKey", CustomColumKey.ToString(), string.Format(" and OperatorId='{0}' ", ERPInfo.Instance.UserId), out rowItem);
|
|
if (!success)
|
|
{
|
|
MessageUtil.Show("未开启导出列设置功能,请联系朗速!");
|
|
return;
|
|
}
|
|
if (MessageUtil.Show(ResourceKeys.IsSaveColumn, MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
try
|
|
{
|
|
if (rowItem == null)
|
|
{
|
|
success = this.SaveExportColumnToDatabase(this.CustomColumKey);
|
|
}
|
|
else
|
|
{
|
|
success = this.UpdateExportColumnToDatabase(this.CustomColumKey);
|
|
}
|
|
MessageUtil.Show(success ? ResourceKeys.SaveSuccess : ResourceKeys.SaveFault);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Instance.WriteError(ex);
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region 方法
|
|
/// <summary>
|
|
/// 初始化左侧表格列
|
|
/// </summary>
|
|
private void InitLeftGridColumns()
|
|
{
|
|
GridColumn systemFieldNameCol = new GridColumn();
|
|
systemFieldNameCol.Caption = "系统名称";
|
|
systemFieldNameCol.FieldName = "fieldName";
|
|
systemFieldNameCol.Visible = true;
|
|
systemFieldNameCol.VisibleIndex = 1;
|
|
GridColumn userFieldNameCol = new GridColumn();
|
|
userFieldNameCol.Caption = "用户名称";
|
|
userFieldNameCol.FieldName = "userName";
|
|
userFieldNameCol.Visible = true;
|
|
userFieldNameCol.VisibleIndex = 2;
|
|
this.leftGrid.Controls.Remove(this.leftGrid.plbuttomObj);
|
|
this.leftGrid.GridView.OptionsBehavior.Editable = false;
|
|
this.leftGrid.GridView.Columns.AddRange(new GridColumn[] { systemFieldNameCol, userFieldNameCol });
|
|
}
|
|
/// <summary>
|
|
/// 初始化左侧表格列
|
|
/// </summary>
|
|
private void InitRightGridColumns()
|
|
{
|
|
GridColumn systemFieldNameCol = new GridColumn();
|
|
systemFieldNameCol.Caption = "系统名称";
|
|
systemFieldNameCol.FieldName = "fieldName";
|
|
systemFieldNameCol.Visible = true;
|
|
systemFieldNameCol.VisibleIndex = 1;
|
|
GridColumn userFieldNameCol = new GridColumn();
|
|
userFieldNameCol.Caption = "用户名称";
|
|
userFieldNameCol.FieldName = "userName";
|
|
userFieldNameCol.Visible = true;
|
|
userFieldNameCol.VisibleIndex = 2;
|
|
this.rightGrid.Controls.Remove(this.rightGrid.plbuttomObj);
|
|
this.rightGrid.GridView.OptionsBehavior.Editable = false;
|
|
this.rightGrid.GridView.Columns.AddRange(new GridColumn[] { systemFieldNameCol, userFieldNameCol });
|
|
}
|
|
/// <summary>
|
|
/// 初始化左侧数据源
|
|
/// </summary>
|
|
private void InitLeftGridData()
|
|
{
|
|
this.leftDataSource.Columns.Add("fieldName");
|
|
this.leftDataSource.Columns.Add("userName");
|
|
foreach (GridColumn column in this.SourceGridEx.GridView.Columns)
|
|
{
|
|
DataRow dataRow = this.leftDataSource.NewRow();
|
|
dataRow["fieldName"] = column.FieldName;
|
|
dataRow["userName"] = column.Caption;
|
|
this.leftDataSource.Rows.Add(dataRow);
|
|
}
|
|
//this.leftDataSource = this.leftDataSource.Select().Where(n => this.rightDataSource.Select(string.Format("fieldName='{0}'", n["fieldName"] + "")).Length == 0).CopyToDataTable();
|
|
foreach (DataRow row in this.rightDataSource.Rows)
|
|
{
|
|
DataRow[] selectRows = this.leftDataSource.Select().Where(n => (n["fieldName"] + "").Equals(row["fieldName"] + "")).ToArray();
|
|
if (selectRows.Length > 0)
|
|
{
|
|
DataRow selectRow = selectRows[0];
|
|
this.leftDataSource.Rows.Remove(selectRow);
|
|
}
|
|
}
|
|
this.leftGrid.gridControl.DataSource = this.leftDataSource;
|
|
}
|
|
/// <summary>
|
|
/// 初始化右侧数据源
|
|
/// </summary>
|
|
private void InitRightGridData()
|
|
{
|
|
string sqlstr = "select fieldName,userName from {0} where {1}='{2}' and isExport='1' and operatorid='{3}'";
|
|
sqlstr = string.Format(sqlstr, ResourceKeys.SettingExportTableName, "formkey", this.CustomColumKey,ERPInfo.Instance.UserId);
|
|
this.rightDataSource = SqlHelper.ExecuteDataTable(sqlstr);
|
|
this.rightGrid.gridControl.DataSource = this.rightDataSource;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:保存导出配置列</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-25 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridView">The grid view.</param>
|
|
/// <param name="key">The key.</param>
|
|
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
|
|
public bool SaveExportColumnToDatabase(string key)
|
|
{
|
|
StringBuilder sBuilder = new StringBuilder();
|
|
foreach (DataRow row in this.rightDataSource.Rows)
|
|
{
|
|
string tempSql = string.Format(@"insert into {6}(formkey,fieldname,username,operatorid,operatorName,operatedate,isExport) values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}');",
|
|
key, row["fieldName"] + "", row["userName"] + "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, 1, ResourceKeys.SettingExportTableName);
|
|
sBuilder.Append(tempSql);
|
|
}
|
|
foreach (DataRow row in this.leftDataSource.Rows)
|
|
{
|
|
string tempSql = string.Format(@"insert into {6}(formkey,fieldname,username,operatorid,operatorName,operatedate,isExport) values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}');",
|
|
key, row["fieldName"] + "", row["userName"] + "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, 0, ResourceKeys.SettingExportTableName);
|
|
sBuilder.Append(tempSql);
|
|
}
|
|
return BaseImpl.ExecSqlValue(sBuilder.ToString()) > 0;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:保存导出配置列</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-25 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridView">The grid view.</param>
|
|
/// <param name="key">The key.</param>
|
|
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
|
|
public bool UpdateExportColumnToDatabase(string key)
|
|
{
|
|
StringBuilder sBuilder = new StringBuilder();
|
|
string sqlValue = string.Format("select * from {0} where formKey='{1}' and OperatorId='{2}'", ResourceKeys.SettingExportTableName, key, ERPInfo.Instance.UserId);
|
|
DataTable exportTable = SqlHelper.ExecuteDataTable(sqlValue);
|
|
foreach (DataRow row in this.rightDataSource.Rows)
|
|
{
|
|
string tempSql = string.Empty;
|
|
DataRow[] dataRows = exportTable.Select().Where(n => (n["fieldName"] + "").Equals(row["fieldName"] + "")).ToArray();
|
|
if (dataRows.Length == 0)
|
|
{
|
|
tempSql = string.Format(@"insert into {6}(formkey,fieldname,username,operatorid,operatorName,operatedate,isExport) values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}');",
|
|
key, row["fieldName"] + "", row["userName"] + "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, 1, ResourceKeys.SettingExportTableName);
|
|
sBuilder.Append(tempSql);
|
|
}
|
|
else
|
|
{
|
|
tempSql = string.Format(@"update {4} set isExport= '{0}',operatedate = getdate() where formkey='{1}' and fieldname='{2}' and operatorid='{3}';",
|
|
1, key, row["fieldName"] + "", ERPInfo.Instance.UserId, ResourceKeys.SettingExportTableName);
|
|
sBuilder.Append(tempSql);
|
|
}
|
|
}
|
|
foreach (DataRow row in this.leftDataSource.Rows)
|
|
{
|
|
string tempSql = string.Empty;
|
|
DataRow[] dataRows = exportTable.Select().Where(n => (n["fieldName"] + "").Equals(row["fieldName"] + "")).ToArray();
|
|
if (dataRows.Length == 0)
|
|
{
|
|
tempSql = string.Format(@"insert into {6}(formkey,fieldname,username,operatorid,operatorName,operatedate,isExport) values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}');",
|
|
key, row["fieldName"] + "", row["userName"] + "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, 0, ResourceKeys.SettingExportTableName);
|
|
sBuilder.Append(tempSql);
|
|
}
|
|
else
|
|
{
|
|
tempSql = string.Format(@"update {4} set isExport= '{0}',operatedate = getdate() where formkey='{1}' and fieldname='{2}' and operatorid='{3}';",
|
|
0, key, row["fieldName"] + "", ERPInfo.Instance.UserId, ResourceKeys.SettingExportTableName);
|
|
sBuilder.Append(tempSql);
|
|
}
|
|
}
|
|
return BaseImpl.ExecSqlValue(sBuilder.ToString()) > 0;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|