3516 lines
158 KiB
C#
3516 lines
158 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
using DevExpress.XtraGrid.Views.Grid;
|
|
using DevExpress.XtraGrid;
|
|
using DevExpress.XtraGrid.Columns;
|
|
using DevExpress.Utils;
|
|
using CommonLib;
|
|
using DevExpress.XtraEditors.Repository;
|
|
using DevExpress.XtraEditors.Controls;
|
|
using System.Text.RegularExpressions;
|
|
using Lskj.MyControl.LookUp;
|
|
using DevExpress.XtraEditors;
|
|
using Lskj.PubUtils;
|
|
using DevExpress.Data;
|
|
using DevExpress.XtraGrid.Menu;
|
|
using DevExpress.Utils.Menu;
|
|
using DevExpress.XtraGrid.Views.Base;
|
|
using ControlLib.inh;
|
|
using DevExpress.XtraPrinting;
|
|
using Lskj.Common;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace Lskj.MyControl
|
|
{
|
|
public partial class GridControlEx : UserControl
|
|
{
|
|
|
|
public GridView gridView { get { return gridView1; } }
|
|
public GridControl gridControl { get { return gridMain; } }
|
|
|
|
public string Sql { get; set; }
|
|
public string sqlC { get; set; }
|
|
public string ConstSql { get; set; }
|
|
public int SourceType { get; set; }
|
|
|
|
public bool IsColumnFix;
|
|
public bool IsSaveColumn = true;
|
|
public string loadBom { get; set; }
|
|
public string bomSql { get; set; }
|
|
public string bomCaption { get; set; }
|
|
public string detailEnableCond { get; set; }
|
|
public string detailEnableMsg { get; set; }
|
|
public static string OperatorId { get; set; }
|
|
public static string OperatorName { get; set; }
|
|
public bool AddCopyRows;
|
|
public string ColumnPrefix;
|
|
public string GridText;
|
|
|
|
private string headerColor = "#A0A0A0";
|
|
private bool isCancel = false;
|
|
private double customSum = 0.00;
|
|
private Dictionary<string, double> dicSum;
|
|
private Dictionary<string, Dictionary<string, string>> lookupDatas;
|
|
public Dictionary<string, DataTable> lookupTables;
|
|
private bool inSummary = false;
|
|
private bool isSetColumnWidth = false;
|
|
private DataTable clipTable;
|
|
public DataTable SumFieldsTable { get; set; }
|
|
private DataTable dtColumns;
|
|
/// <summary>
|
|
/// 当前设置列方式
|
|
/// </summary>
|
|
private int _currentSetColumnType;
|
|
private string ColumnSQL = string.Empty;
|
|
/// <summary>
|
|
/// 禁用表格是否需要改变表格颜色
|
|
/// </summary>
|
|
public bool UnAllowEditChangeColor { get; set; }
|
|
/// <summary>
|
|
/// 表格列信息保存需要的信息
|
|
/// </summary>
|
|
public string ModuleKey; //关键字
|
|
public string FormKey;
|
|
public int ModuleType; //模块类型//基础档案
|
|
/// <summary>
|
|
/// 0.默认列跳转,1为行跳转
|
|
/// </summary>
|
|
public int EnterOrder;
|
|
|
|
//报表明细
|
|
//单据明细
|
|
//来源主信息
|
|
//来源明细信息
|
|
//单据来源主信息
|
|
public Control pnlMain { get; set; }
|
|
|
|
public GridControlEx()
|
|
{
|
|
InitializeComponent();
|
|
gridView1.IndicatorWidth = 40;
|
|
gridView1.KeyDown += new KeyEventHandler(gridView1_KeyDown);
|
|
gridView1.Appearance.HeaderPanel.Font = new Font("宋体", 9);
|
|
gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center;
|
|
gridView1.Appearance.Preview.Font = new Font("宋体", 9);
|
|
gridView1.Appearance.Row.Font = new Font("宋体", 9);
|
|
|
|
//gridView1.RowCellStyle += new RowCellStyleEventHandler(gridView1_RowCellStyle);
|
|
|
|
gridView1.RowStyle += new RowStyleEventHandler(gridView1_RowStyle);
|
|
gridView1.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(gridView1_SelectionChange);
|
|
gridView1.ShowingEditor += new CancelEventHandler(gridView1_CancelEditor);
|
|
gridView1.PopupMenuShowing += new PopupMenuShowingEventHandler(gridView1_PopupMenuShowing);
|
|
gridView1.CustomSummaryCalculate += new CustomSummaryEventHandler(gridView1_CustomSummaryCalculate);
|
|
//gridView1.OptionsView.AllowCellMerge = true;
|
|
gridView1.OptionsSelection.MultiSelect = true;
|
|
gridView1.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CellSelect;
|
|
gridView1.OptionsBehavior.EditorShowMode = EditorShowMode.MouseDownFocused;
|
|
gridView1.CustomColumnDisplayText += new DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventHandler(gridView1_CustomColumnDisplayTextEventHandler);
|
|
gridView1.CellValueChanged += new DevExpress.XtraGrid.Views.Base.CellValueChangedEventHandler(gridBillInfo_CellValueChanged);
|
|
gridView1.OptionsView.RowAutoHeight = true;
|
|
gridView1.OptionsBehavior.CopyToClipboardWithColumnHeaders = false;
|
|
|
|
gridView1.DoubleClick += new EventHandler(gridView1_DoubleClick);
|
|
|
|
dicSum = new Dictionary<string, double>();
|
|
lookupDatas = new Dictionary<string, Dictionary<string, string>>();
|
|
lookupTables = new Dictionary<string, DataTable>();
|
|
|
|
clipTable = new DataTable();
|
|
AddCopyRows = false;
|
|
ColumnPrefix = "";
|
|
OperatorId = ERPInfo.Instance.EmployeeId.ToString();
|
|
OperatorName = ERPInfo.Instance.EmployeeName.ToString();
|
|
}
|
|
|
|
void gridView1_RowStyle(object sender, RowStyleEventArgs e)
|
|
{
|
|
if (e.RowHandle >= 0)
|
|
{
|
|
DataRow row = this.gridView.GetDataRow(e.RowHandle);
|
|
if (row == null)
|
|
return;
|
|
//颜色集合
|
|
DataTable dt = RowColorCondtion as DataTable;
|
|
|
|
|
|
if (dt == null)
|
|
return;
|
|
//选择列
|
|
string cond = string.Empty;
|
|
string color = string.Empty;
|
|
string forecolor = string.Empty;
|
|
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dt.Rows)
|
|
{
|
|
cond = dr["condition"].ToString();
|
|
List<string> condition = GetParamValue(cond);
|
|
foreach (string item in condition)
|
|
{
|
|
string filedName = item.Replace("{", "").Replace("}", "");
|
|
if (row.Table.Columns.Contains(filedName))
|
|
{
|
|
string dataType = row.Table.Columns[filedName].DataType.ToString();
|
|
if (!dataType.Equals("decimal"))
|
|
cond = cond.Replace(item, row[filedName].ToString());
|
|
else
|
|
cond = cond.Replace(item, string.IsNullOrWhiteSpace(row[filedName].ToString()) ? "0" : row[filedName].ToString());
|
|
}
|
|
else
|
|
cond = cond.Replace(item, "0");
|
|
}
|
|
cond = SqlToCode(cond);
|
|
color = dr["backcolor"] + "";
|
|
forecolor = dr["forcecolor"].ToString() + "";
|
|
|
|
string obj = Evaluator.Eval(cond) + "";
|
|
if (obj.IndexOf("true", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
if (!string.IsNullOrEmpty(color))
|
|
{
|
|
System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml(color);
|
|
e.Appearance.BackColor = color1;
|
|
}
|
|
if (!string.IsNullOrEmpty(forecolor))
|
|
{
|
|
System.Drawing.Color foreColor = System.Drawing.ColorTranslator.FromHtml(forecolor);
|
|
e.Appearance.ForeColor = foreColor;
|
|
}
|
|
|
|
FontStyle fst = new FontStyle();
|
|
if (dr["ifBold"].ToString() == "1")
|
|
{
|
|
fst = fst | FontStyle.Bold;
|
|
}
|
|
if (dr["ifItalic"].ToString() == "1")
|
|
{
|
|
fst = fst | FontStyle.Italic;
|
|
}
|
|
if (dr["ifStrickOut"].ToString() == "1")
|
|
{
|
|
fst = fst | FontStyle.Strikeout;
|
|
}
|
|
if (dr["ifUnderLine"].ToString() == "1")
|
|
{
|
|
fst = fst | FontStyle.Underline;
|
|
}
|
|
e.Appearance.Font = new Font(e.Appearance.Font, fst);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void gridView1_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
if (gridControl.ContextMenuStrip != null)
|
|
{
|
|
foreach (ToolStripMenuItem item in gridControl.ContextMenuStrip.Items)
|
|
{
|
|
if (item.Tag == null)
|
|
continue;
|
|
DataRow dr = item.Tag as DataRow;
|
|
if (dr == null)
|
|
continue;
|
|
|
|
if (dr.Table.Columns.Contains("DBClickEvent"))
|
|
{
|
|
if (dr["DBClickEvent"] + "" == "1")
|
|
{
|
|
string menuCond = dr["menuCond"] + "";
|
|
int[] rows = gridView1.GetSelectedRows();
|
|
if (rows != null && rows.Count() > 0)
|
|
{
|
|
DataRow row = gridView1.GetDataRow(rows[0]);
|
|
menuCond = ReqSqlParam(menuCond, OperatorId, OperatorName);
|
|
menuCond = ReqSqlWhere(row, menuCond);
|
|
bool isEnabled = false;
|
|
try
|
|
{
|
|
isEnabled = string.IsNullOrWhiteSpace(menuCond) || Convert.ToBoolean(Evaluator.Eval(menuCond));
|
|
}
|
|
catch (Exception)
|
|
{
|
|
XtraMessageBox.Show(string.Format("{0} 配置条件错误,请检查.", dr["menuName"]));
|
|
}
|
|
|
|
if (isEnabled)
|
|
{
|
|
item.PerformClick();
|
|
}
|
|
else
|
|
{
|
|
XtraMessageBox.Show("当前选择数据不满足条件.");
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public void reloadDictionary()
|
|
{
|
|
foreach (GridColumn gc in gridView1.Columns)
|
|
{
|
|
if (!(gc.ColumnEdit is RepositoryItemSearchLookUpEdit))
|
|
continue;
|
|
|
|
RepositoryItemSearchLookUpEdit combox = gc.ColumnEdit as RepositoryItemSearchLookUpEdit;
|
|
LookUpTag ltag = combox.Tag as LookUpTag;
|
|
if (ltag != null)
|
|
{
|
|
String SQL = ltag.Sql;
|
|
if (SQL != null)
|
|
{
|
|
SQL = Regex.Replace(SQL, "#[^##]+#", " 1=1 ");
|
|
DataTable dtTable = SqlHelper.ExecuteDataSet(SQL).Tables[0];
|
|
combox.DataSource = dtTable;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#region 处理Grid计算
|
|
private void gridBillInfo_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
|
|
{
|
|
MyTagModel tag = e.Column.Tag as MyTagModel;
|
|
if (tag.unionFields + "" != "")
|
|
setUnionValue(e.Column, e.Value);
|
|
|
|
if (SumFieldsTable == null)
|
|
return;
|
|
if (inSummary) return;
|
|
inSummary = true;
|
|
string calcSource = string.Empty;
|
|
try
|
|
{
|
|
DataRow gvRow = gridView.GetDataRow(e.RowHandle);
|
|
foreach (DataRow row in SumFieldsTable.Rows)
|
|
{
|
|
bool ifTruncate = false;
|
|
string calcExpr = row["calcExpr"].ToString();
|
|
if (calcExpr.IndexOf("@truncate:", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
calcExpr = calcExpr.Substring(10);
|
|
ifTruncate = true;
|
|
}
|
|
// 注释此代码会导致公式 a+1=b c+1=d 计算正常,此时手动修改b的值,在输入c的值时会同时计算b的值,导致无法修改。
|
|
//if (calcExpr.IndexOf("{" + e.Column.FieldName + "}", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
try
|
|
{
|
|
calcSource = calcExpr;
|
|
if (e.Column.FieldName != row["fieldName"].ToString())
|
|
{
|
|
List<string> listParam = GetParamValue(calcExpr);
|
|
foreach (string str in listParam)
|
|
{
|
|
string filed = str.Replace("{", "").Replace("}", "");
|
|
string filedValue = "";
|
|
if (gvRow.Table.Columns.Contains(filed))
|
|
{
|
|
filedValue = gvRow[filed].ToString();
|
|
if (string.IsNullOrEmpty(filedValue))
|
|
filedValue = "0";
|
|
calcExpr = calcExpr.Replace(str, filedValue + "");
|
|
}
|
|
//根据单据头变量替换
|
|
if (pnlMain != null)
|
|
{
|
|
Control[] ctrs = pnlMain.Controls.Find("txt_" + filed, true);
|
|
if ((ctrs != null) && (ctrs.Length > 0))
|
|
{
|
|
filedValue = GetControlText(ctrs[0]);
|
|
calcExpr = calcExpr.Replace(str, filedValue + "");
|
|
}
|
|
}
|
|
}
|
|
|
|
try
|
|
{
|
|
calcExpr = calcExpr.Replace("=", "==").Replace("<>", "!=").Replace("and", "&&").Replace("or", "|").Replace("--", "+");
|
|
string result = Evaluator.Eval(calcExpr).ToString();
|
|
|
|
double d = 0;
|
|
if (!string.IsNullOrEmpty(result) &&
|
|
!"NaN".Equals(result, StringComparison.OrdinalIgnoreCase) &&
|
|
!"非数字".Equals(result, StringComparison.OrdinalIgnoreCase) &&
|
|
!"undefined".Equals(result, StringComparison.OrdinalIgnoreCase) &&
|
|
result != "∞" && result != "-∞" &&
|
|
!"正无穷大".Equals(result, StringComparison.OrdinalIgnoreCase) &&
|
|
!"负无穷大".Equals(result, StringComparison.OrdinalIgnoreCase) &&
|
|
double.TryParse(result, out d))
|
|
{
|
|
//MessageBox.Show("公式:" + calcExpr + ";值:" + result);
|
|
int idataDec = 2;
|
|
if (row.Table.Columns.Contains("DataDec"))
|
|
idataDec = int.Parse(row["DataDec"].ToString());
|
|
if (ifTruncate)
|
|
{
|
|
|
|
if (result.IndexOf(".") == -1)
|
|
result = result + ".0000000000";
|
|
else
|
|
result = result + "0000000000";
|
|
|
|
gvRow[row["fieldName"].ToString()] = result.Substring(0, result.IndexOf(".")) + result.Substring(result.IndexOf("."), idataDec + 1);
|
|
//gridView.SetRowCellValue(e.RowHandle, gridView.Columns[row["fieldName"].ToString()],
|
|
//result.Substring(0, result.IndexOf(".")) + result.Substring(result.IndexOf("."), idataDec + 1));
|
|
}
|
|
else
|
|
{
|
|
gvRow[row["fieldName"].ToString()] = Math.Round(d, idataDec, MidpointRounding.AwayFromZero);
|
|
//gridView.SetRowCellValue(e.RowHandle, gridView.Columns[row["fieldName"].ToString()], Math.Round(d, idataDec, MidpointRounding.AwayFromZero));
|
|
//gridView.UpdateCurrentRow();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//gridView.SetRowCellValue(e.RowHandle, gridView.Columns[row["fieldName"].ToString()], 0);
|
|
//MessageBox.Show("计算公式定义错误:" + calcSource + " >> " + calcExpr + "\n" + ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
//MessageBox.Show("计算公式定义错误:" + calcSource + "\n" + ex.Message);
|
|
}
|
|
inSummary = false;
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
public void setCalcExpr(DataRow row, int RowHandle)
|
|
{
|
|
DataRow gvRow = gridView.GetDataRow(RowHandle);
|
|
bool ifTruncate = false;
|
|
|
|
string calcExpr = row["calcExpr"].ToString();
|
|
if (calcExpr.IndexOf("@truncate:", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
calcExpr = calcExpr.Substring(10);
|
|
ifTruncate = true;
|
|
}
|
|
//if (e.Column.FieldName != row["fieldName"].ToString())
|
|
//{
|
|
List<string> listParam = GetParamValue(calcExpr);
|
|
foreach (string str in listParam)
|
|
{
|
|
string filed = str.Replace("{", "").Replace("}", "");
|
|
string filedValue = "";
|
|
if (gvRow.Table.Columns.Contains(filed))
|
|
{
|
|
filedValue = gvRow[filed].ToString();
|
|
if (string.IsNullOrEmpty(filedValue))
|
|
filedValue = "0";
|
|
calcExpr = calcExpr.Replace(str, filedValue + "");
|
|
}
|
|
//根据单据头变量替换
|
|
if (pnlMain != null)
|
|
{
|
|
Control[] ctrs = pnlMain.Controls.Find("txt_" + filed, true);
|
|
if ((ctrs != null) && (ctrs.Length > 0))
|
|
{
|
|
filedValue = GetControlText(ctrs[0]);
|
|
calcExpr = calcExpr.Replace(str, filedValue + "");
|
|
}
|
|
}
|
|
}
|
|
calcExpr = calcExpr.Replace("=", "==").Replace("<>", "!=").Replace("and", "&&").Replace("or", "|").Replace("--", "+");
|
|
string result = Evaluator.Eval(calcExpr).ToString();
|
|
|
|
int idataDec = 2;
|
|
if (row.Table.Columns.Contains("DataDec"))
|
|
idataDec = int.Parse(row["DataDec"].ToString());
|
|
try
|
|
{
|
|
if (ifTruncate)
|
|
{
|
|
if (result.IndexOf(".") == -1)
|
|
result = result + ".0000000000";
|
|
else
|
|
result = result + "0000000000";
|
|
gridView.SetRowCellValue(RowHandle, gridView.Columns[row["fieldName"].ToString()],
|
|
result.Substring(0, result.IndexOf(".")) + result.Substring(result.IndexOf("."), idataDec + 1));
|
|
}
|
|
else
|
|
{
|
|
|
|
if (!"NaN".Equals(result) && !"undefined".Equals(result))
|
|
{
|
|
if (string.IsNullOrEmpty(result)) result = "0";
|
|
gridView.SetRowCellValue(RowHandle, gridView.Columns[row["fieldName"].ToString()],
|
|
Math.Round(double.Parse(result), idataDec, MidpointRounding.AwayFromZero));
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setUnionValue(GridColumn col, object value)
|
|
{
|
|
MyTagModel lookUpTag = col.Tag as MyTagModel;
|
|
var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle);
|
|
if (focusRow != null && lookUpTag != null)
|
|
{
|
|
string columnName = col.FieldName;
|
|
string unionFields = lookUpTag.unionFields;
|
|
string unionValue = lookUpTag.unionValue;
|
|
|
|
unionValue = ReqSqlParam(unionValue, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
string cellValue = string.IsNullOrEmpty(value + "") ? "" : value.ToString();
|
|
unionValue = unionValue.Replace("{" + columnName + "}", cellValue);
|
|
|
|
var fieldParams = GetParamValue(unionValue);
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
string fieldValue = focusRow[fieldName] + "";
|
|
unionValue = unionValue.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
DataTable dtTable = SqlHelper.ExecuteDataSet(unionValue).Tables[0];
|
|
if (dtTable.Rows.Count > 0)
|
|
{
|
|
DataRow row = dtTable.Rows[0];
|
|
string[] unionFieldSplit = unionFields.Split(',');
|
|
for (int i = 0; i < unionFieldSplit.Count(); i++)
|
|
{
|
|
string fieldName = unionFieldSplit[i];
|
|
if (fieldName.Trim() != "")
|
|
{
|
|
focusRow[fieldName] = row[fieldName];
|
|
//gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns[fieldName], row[fieldName]);
|
|
//gridView.UpdateCurrentRow();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string[] unionFieldSplit = unionFields.Split(',');
|
|
for (int i = 0; i < unionFieldSplit.Count(); i++)
|
|
{
|
|
string fieldName = unionFieldSplit[i];
|
|
if (fieldName.Trim() != "")
|
|
{
|
|
focusRow[fieldName] = DBNull.Value;
|
|
//gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns[fieldName], null);
|
|
//gridView.UpdateCurrentRow();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void gridView1_CustomColumnDisplayTextEventHandler(object sender, CustomColumnDisplayTextEventArgs e)
|
|
{
|
|
if (e.Column.ColumnEdit is RepositoryItemButtonEdit)
|
|
{
|
|
RepositoryItemButtonEdit colEdit = e.Column.ColumnEdit as RepositoryItemButtonEdit;
|
|
if (colEdit.Tag + "" == "13")
|
|
{
|
|
string lValue = e.Value + "";
|
|
if (lValue.Trim() != "")
|
|
{
|
|
string disp = "";
|
|
string[] lst = lValue.Split(',');
|
|
Dictionary<string, string> ldic = lookupDatas[e.Column.FieldName];
|
|
foreach (string item in lst)
|
|
{
|
|
if (ldic.ContainsKey(item))
|
|
disp += ldic[item] + ",";
|
|
else
|
|
disp += item + ",";
|
|
}
|
|
e.DisplayText = disp.TrimEnd(',');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private void gridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
|
|
{
|
|
GridSummaryItem gi = e.Item as GridSummaryItem;
|
|
if (e.SummaryProcess == CustomSummaryProcess.Start)
|
|
{
|
|
customSum = 0;
|
|
dicSum.Clear();
|
|
}
|
|
GridColumn gcol = gridView1.Columns[gi.FieldName];
|
|
MyTagModel calcTag = gcol.Tag as MyTagModel;
|
|
string calcStr = "";
|
|
if (gcol.Tag != null)
|
|
{
|
|
calcStr = (calcTag.calcExpr + "").Trim();
|
|
}
|
|
|
|
if (e.SummaryProcess == CustomSummaryProcess.Calculate)
|
|
{
|
|
if (calcStr != "")
|
|
{
|
|
try
|
|
{
|
|
List<string> listParam = GetParamValue(calcStr);
|
|
foreach (string str in listParam)
|
|
{
|
|
string filed = str.Replace("{", "").Replace("}", "");
|
|
GridColumn tmpgcol = gridView1.Columns[filed];
|
|
string filedValue = gridView1.GetRowCellValue(e.RowHandle, tmpgcol).ToString();
|
|
if (string.IsNullOrEmpty(filedValue))
|
|
filedValue = "0";
|
|
if (dicSum.ContainsKey(filed))
|
|
{
|
|
dicSum[filed] += Math.Round(double.Parse(filedValue), 2, MidpointRounding.AwayFromZero);
|
|
}
|
|
else
|
|
{
|
|
dicSum.Add(filed, Math.Round(double.Parse(filedValue), 2, MidpointRounding.AwayFromZero));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//MessageBox.Show("计算公式定义错误:" + calcSource + " >> " + calcExpr + "\n" + ex.Message);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (e.SummaryProcess == CustomSummaryProcess.Finalize)
|
|
{
|
|
if (dicSum.Count > 0)
|
|
try
|
|
{
|
|
List<string> listParam = GetParamValue(calcStr);
|
|
foreach (string str in listParam)
|
|
{
|
|
string filed = str.Replace("{", "").Replace("}", "");
|
|
string filedValue = dicSum[filed].ToString();
|
|
if (string.IsNullOrEmpty(filedValue))
|
|
filedValue = "0";
|
|
|
|
calcStr = calcStr.Replace(str, filedValue + "");
|
|
}
|
|
calcStr = calcStr.Replace("=", "==").Replace("<>", "!=").Replace("and", "&&").Replace("or", "|");
|
|
string result = Evaluator.Eval(calcStr).ToString();
|
|
int idataDec = 2;
|
|
customSum += Math.Round(double.Parse(result), idataDec, MidpointRounding.AwayFromZero);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//MessageBox.Show("计算公式定义错误:" + calcSource + " >> " + calcExpr + "\n" + ex.Message);
|
|
}
|
|
e.TotalValue = customSum;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// sql转换成代码
|
|
/// </summary>
|
|
public static string SqlToCode(string str)
|
|
{
|
|
string result = str;
|
|
result = result.Replace("=", "==");
|
|
result = result.Replace("<>", "!=");
|
|
result = result.Replace("and", "&&");
|
|
result = result.Replace("or", "||");
|
|
result = result.Replace(">==", ">=");
|
|
result = result.Replace("<==", "<=");
|
|
return result;
|
|
}
|
|
|
|
void gridView1_RowCellStyle(object sender, RowCellStyleEventArgs e)
|
|
{
|
|
if (!e.Column.OptionsColumn.AllowEdit && UnAllowEditChangeColor)
|
|
{
|
|
//System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml("#d0d0d0");
|
|
//Color color1 = ColorTranslator.FromHtml("#F0F0F0");
|
|
//e.Appearance.BackColor = color1;
|
|
//e.Appearance.ForeColor = ColorTranslator.FromHtml("#787878");
|
|
}
|
|
if (e.RowHandle >= 0)
|
|
{
|
|
DataRow row = this.gridView.GetDataRow(e.RowHandle);
|
|
if (row == null)
|
|
return;
|
|
//颜色集合
|
|
DataTable dt = RowColorCondtion as DataTable;
|
|
if (dt == null)
|
|
return;
|
|
//选择列
|
|
string cond = string.Empty;
|
|
string color = string.Empty;
|
|
string forecolor = string.Empty;
|
|
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dt.Rows)
|
|
{
|
|
Application.DoEvents();
|
|
cond = dr["condition"].ToString();
|
|
cond = cond.Replace("{COLUMN_NAME}", e.Column.Name.Replace("col", ""));
|
|
cond = cond.Replace("{COLUMN_TITLE}", e.Column.Caption);
|
|
List<string> condition = GetParamValue(cond);
|
|
foreach (string item in condition)
|
|
{
|
|
string filedName = item.Replace("{", "").Replace("}", "");
|
|
if (row.Table.Columns.Contains(filedName))
|
|
{
|
|
string dataType = row.Table.Columns[filedName].DataType.ToString();
|
|
if (!dataType.Equals("decimal"))
|
|
cond = cond.Replace(item, row[filedName].ToString());
|
|
else
|
|
cond = cond.Replace(item, string.IsNullOrWhiteSpace(row[filedName].ToString()) ? "0" : row[filedName].ToString());
|
|
}
|
|
else
|
|
cond = cond.Replace(item, "0");
|
|
}
|
|
cond = SqlToCode(cond);
|
|
color = dr["backcolor"] + "";
|
|
forecolor = dr["forcecolor"].ToString() + "";
|
|
|
|
string obj = Evaluator.Eval(cond) + "";
|
|
if (obj.IndexOf("true", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
if (!string.IsNullOrEmpty(color))
|
|
{
|
|
System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml(color);
|
|
e.Appearance.BackColor = color1;
|
|
}
|
|
if (!string.IsNullOrEmpty(forecolor))
|
|
{
|
|
System.Drawing.Color foreColor = System.Drawing.ColorTranslator.FromHtml(forecolor);
|
|
e.Appearance.ForeColor = foreColor;
|
|
}
|
|
|
|
FontStyle fst = new FontStyle();
|
|
if (dr["ifBold"].ToString() == "1")
|
|
{
|
|
fst = fst | FontStyle.Bold;
|
|
}
|
|
if (dr["ifItalic"].ToString() == "1")
|
|
{
|
|
fst = fst | FontStyle.Italic;
|
|
}
|
|
if (dr["ifStrickOut"].ToString() == "1")
|
|
{
|
|
fst = fst | FontStyle.Strikeout;
|
|
}
|
|
if (dr["ifUnderLine"].ToString() == "1")
|
|
{
|
|
fst = fst | FontStyle.Underline;
|
|
}
|
|
e.Appearance.Font = new Font(e.Appearance.Font, fst);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
private void gridView1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
|
|
{
|
|
if (sender != null && e != null)
|
|
{
|
|
if (e.KeyCode == Keys.Return)
|
|
{
|
|
if (gridView1.FocusedColumn.VisibleIndex == gridView1.Columns.Count - 1)
|
|
{
|
|
gridView1.FocusedRowHandle = gridView1.FocusedRowHandle + 1;
|
|
gridView1.FocusedColumn = gridView1.Columns[0];
|
|
}
|
|
else
|
|
{
|
|
if (EnterOrder == 1)
|
|
{
|
|
gridView.FocusedRowHandle = gridView.FocusedRowHandle + 1;
|
|
}
|
|
else
|
|
{
|
|
gridView1.FocusedColumn = gridView1.Columns[gridView1.FocusedColumn.VisibleIndex + 1];
|
|
}
|
|
}
|
|
}
|
|
if (e.Control & e.KeyCode == Keys.C)
|
|
{
|
|
DevExpress.XtraGrid.Views.Base.GridCell[] selecells = gridView.GetSelectedCells();
|
|
if (selecells.Length == 1)
|
|
{
|
|
object obj = gridView1.GetFocusedRowCellValue(gridView1.FocusedColumn);
|
|
if (obj != null)
|
|
{
|
|
Clipboard.SetDataObject(obj + "");
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
gridView1.CopyToClipboard();
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.V)
|
|
{
|
|
isCancel = true;
|
|
//e.Handled = true;
|
|
object _objData = null;
|
|
IDataObject dataObj = Clipboard.GetDataObject();
|
|
|
|
if (dataObj.GetDataPresent(DataFormats.Text))
|
|
_objData = dataObj.GetData(DataFormats.Text);
|
|
|
|
if (_objData != null)
|
|
{
|
|
string _tempStr = _objData.ToString();
|
|
int _rowNumber = 1;
|
|
int _pasteRowCount = 1;
|
|
string[] _split = { "\r\n" };
|
|
string[] _arrayRowStr = _tempStr.Split(_split, StringSplitOptions.None);
|
|
if (_arrayRowStr.Length < 1)
|
|
return;
|
|
DevExpress.XtraGrid.Views.Base.GridCell[] selecells = gridView.GetSelectedCells();
|
|
if (selecells != null && selecells.Length > 0)
|
|
{
|
|
_rowNumber = selecells[0].RowHandle;
|
|
if (_arrayRowStr.Length != gridView.SelectedRowsCount)
|
|
{
|
|
//选择区域与粘贴行数不匹配
|
|
}
|
|
|
|
_pasteRowCount = _arrayRowStr.Length;
|
|
for (int i = 0; i < _pasteRowCount; i++)
|
|
{
|
|
string[] _arrayStr2 = _arrayRowStr[i].Split('\t');
|
|
if ((i == _pasteRowCount - 1) && (_arrayRowStr[_pasteRowCount - 1].Replace("\r\n", "").Trim() == ""))
|
|
continue;
|
|
if (_arrayStr2.Length == 0)
|
|
_arrayStr2[0] = _arrayRowStr[i];
|
|
//MessageBox.Show(_arrayStr2[0]);
|
|
int _colNumber = selecells[0].Column.AbsoluteIndex;
|
|
for (int j = 0; j < _arrayStr2.Length; j++)
|
|
{
|
|
//MessageBox.Show(_arrayStr2[j]);
|
|
if ((gridView.OptionsBehavior.Editable == true) && (gridView.Columns[_colNumber].OptionsColumn.AllowEdit))
|
|
gridView.SetRowCellValue(_rowNumber, gridView.Columns[_colNumber], _arrayStr2[j]);
|
|
_colNumber += 1;
|
|
}
|
|
_rowNumber += 1;
|
|
}
|
|
if (ModuleType == 1)
|
|
SendKeys.Send("{esc}");
|
|
//e.Handled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (e.Control & e.Shift & e.KeyCode == Keys.C)
|
|
{
|
|
if ((gridView.OptionsBehavior.Editable == true) && (AddCopyRows == true))
|
|
{
|
|
DataTable dt = gridView.GridControl.DataSource as DataTable;
|
|
clipTable.Rows.Clear();
|
|
clipTable = dt.Clone();
|
|
foreach (int hnd in gridView.GetSelectedRows())
|
|
{
|
|
object[] obj = gridView.GetDataRow(hnd).ItemArray;
|
|
clipTable.LoadDataRow(obj, true);
|
|
}
|
|
|
|
|
|
if (clipTable.Rows.Count > 0)
|
|
{
|
|
DialogResult dlg = MessageBox.Show("是否复制新增选中的行", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
|
//DataTable dt = gridView.GridControl.DataSource as DataTable;
|
|
foreach (DataRow dr in clipTable.Rows)
|
|
{
|
|
DataRow drnew = dt.NewRow();
|
|
|
|
object[] obj = dr.ItemArray;
|
|
//drnew.ItemArray = obj;
|
|
for (int i = 0; i < clipTable.Columns.Count; i++)
|
|
{
|
|
if (!clipTable.Columns[i].ColumnName.ToLower().Equals(ColumnPrefix + "id", StringComparison.OrdinalIgnoreCase))
|
|
drnew[i] = dr[i];
|
|
}
|
|
dt.Rows.Add(drnew);
|
|
|
|
//dt.LoadDataRow(obj, true);
|
|
}
|
|
}
|
|
}
|
|
e.Handled = true;
|
|
}
|
|
|
|
if ((e.KeyCode == Keys.F6) || (e.KeyCode == Keys.F7))
|
|
{
|
|
GridColumn gc = gridView.FocusedColumn;
|
|
if ((gc != null) && (gridView.RowCount > 0) && (gc.OptionsColumn.AllowEdit == true) && (gridView.OptionsBehavior.Editable == true))
|
|
{
|
|
DevExpress.XtraGrid.Views.Base.GridCell[] selecells = gridView.GetSelectedCells();
|
|
if (selecells.Length == 1)
|
|
{
|
|
if (gridView.FocusedRowHandle < gridView.RowCount)
|
|
{
|
|
DialogResult dlr = MessageBox.Show("是否替换本列下所有数据为当前单元格数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
|
if (dlr == DialogResult.Yes)
|
|
{
|
|
object obj = gridView.GetFocusedRowCellValue(gc);
|
|
if (obj != null)
|
|
{
|
|
int focusedRowHandle = gridView.FocusedRowHandle;
|
|
for (int i = focusedRowHandle; i < gridView.RowCount; i++)
|
|
{
|
|
gridView.FocusedRowHandle = i;
|
|
object obj1 = gridView.GetRowCellValue(i, gc);
|
|
if (e.KeyCode == Keys.F6)
|
|
{
|
|
if ((obj1 == null) || (obj1.ToString() == "0") || (obj1.ToString() == ""))
|
|
gridView.SetRowCellValue(i, gc, obj);
|
|
}
|
|
else
|
|
gridView.SetRowCellValue(i, gc, obj);
|
|
gridView.PostEditor();
|
|
}
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((e.KeyCode == Keys.F8))
|
|
{
|
|
GridColumn gc = gridView.FocusedColumn;
|
|
if ((gc != null) && (gridView.RowCount > 0) && (gc.OptionsColumn.AllowEdit == true) && (gridView.OptionsBehavior.Editable == true))
|
|
{
|
|
DevExpress.XtraGrid.Views.Base.GridCell[] selecells = gridView.GetSelectedCells();
|
|
if (selecells.Length == 1)
|
|
{
|
|
if (gridView.FocusedRowHandle < gridView.RowCount)
|
|
{
|
|
DialogResult dlr = MessageBox.Show("是否按顺序生成本列数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
|
if (dlr == DialogResult.Yes)
|
|
{
|
|
object obj = gridView.GetFocusedRowCellValue(gc);
|
|
long lint = 0;
|
|
int ilen = 0;
|
|
if ((obj != null) && (Int64.TryParse(obj + "", out lint)))
|
|
{
|
|
ilen = obj.ToString().Length;
|
|
int focusedRowHandle = gridView.FocusedRowHandle;
|
|
for (int i = focusedRowHandle; i <= gridView.RowCount; i++)
|
|
{
|
|
gridView.FocusedRowHandle = i;
|
|
string istr = lint.ToString().PadLeft(ilen, '0');
|
|
gridView.SetRowCellValue(i, gc, istr);
|
|
gridView.PostEditor();
|
|
lint++;
|
|
}
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private DefaultBoolean GetMergeFlag(DataRow row)
|
|
{
|
|
if (!row.Table.Columns.Contains("ifMerge"))
|
|
return DefaultBoolean.False;
|
|
return (row["ifMerge"] + "" == "1") ? DefaultBoolean.True : DefaultBoolean.False;
|
|
}
|
|
public void SetColumns(string sql)
|
|
{
|
|
_currentSetColumnType = 1;
|
|
gridView.Columns.Clear();
|
|
try
|
|
{
|
|
DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0];
|
|
ColumnSQL = sql;
|
|
dtColumns = dt;
|
|
if (OperatorName != "管理员")
|
|
{
|
|
dt = ResetColumns(dt);
|
|
}
|
|
|
|
isSetColumnWidth = dt.Rows.Count == 0;
|
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
DataRow row = dt.Rows[i];
|
|
GridColumn gridColumn = new GridColumn();
|
|
gridColumn.OptionsColumn.AllowMerge = GetMergeFlag(row);
|
|
if (gridColumn.OptionsColumn.AllowMerge == DefaultBoolean.True)
|
|
gridView.OptionsView.AllowCellMerge = true;
|
|
gridColumn.FieldName = row["fieldname"].ToString();
|
|
gridColumn.Name = row["fieldname"].ToString();
|
|
gridColumn.VisibleIndex = i;
|
|
gridColumn.Caption = row["userName"].ToString();
|
|
gridColumn.Width = Convert.ToInt32(row["width"]);
|
|
gridColumn.Visible = ((Convert.ToInt32(row["width"]) > 0));
|
|
|
|
gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList;
|
|
gridColumn.OptionsColumn.AllowEdit = false;
|
|
gridColumn.OptionsColumn.ReadOnly = false;
|
|
|
|
|
|
string dataFormat = row["DataFormat"] + "";
|
|
|
|
CommonUtils.DataFormat(gridColumn, row["DataFormat"] + "", 7); // 单据来源明细没有定义列类型,默认按照数字方式格式化
|
|
DataColumn dc = dt.Columns["Accuracy"];
|
|
if (dc != null)
|
|
{
|
|
string Accuracy = dt.Rows[i]["Accuracy"] + "";
|
|
if (!string.IsNullOrEmpty(Accuracy) && Accuracy != "0")
|
|
{
|
|
gridColumn.DisplayFormat.FormatType = FormatType.Numeric;
|
|
gridColumn.DisplayFormat.FormatString = "F2";
|
|
}
|
|
}
|
|
|
|
DataColumn dcIsSum = dt.Columns["isSum"];
|
|
if (dcIsSum != null)
|
|
{
|
|
if (!String.IsNullOrEmpty(row["isSum"] + ""))
|
|
{
|
|
int isSum = Convert.ToInt32(row["isSum"]);
|
|
//处理统计
|
|
if (isSum == 1)
|
|
{
|
|
string defaultFormat = "{0:" + dataFormat + "}";
|
|
if (dt.Columns.Contains("sumText") && !string.IsNullOrWhiteSpace(dt.Rows[i]["sumText"] + ""))
|
|
defaultFormat = dt.Rows[i]["sumText"] + "";
|
|
|
|
gridView.OptionsView.ShowFooter = true;
|
|
gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), defaultFormat) });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, defaultFormat) });
|
|
}
|
|
}
|
|
}
|
|
|
|
gridView1.Columns.Add(gridColumn);
|
|
}
|
|
if (gridView.Columns.Count > 0)
|
|
{
|
|
GridColumn firstColumn = gridView.Columns[0];
|
|
if (firstColumn != null)
|
|
{
|
|
gridView.OptionsView.ShowFooter = true;
|
|
firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), null, "合计: {0:#,###}行") });
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
isSetColumnWidth = true;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 基础数据
|
|
/// </summary>
|
|
/// <param name="dt"></param>
|
|
public void SetColumns2(DataTable dt)
|
|
{
|
|
_currentSetColumnType = 2;
|
|
dtColumns = dt;
|
|
dt = ResetColumns(dt);
|
|
gridView.Columns.Clear();
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
DataRow row = dt.Rows[i];
|
|
GridColumn gridColumn = new GridColumn();
|
|
gridColumn.OptionsColumn.AllowMerge = GetMergeFlag(row);
|
|
if (gridColumn.OptionsColumn.AllowMerge == DefaultBoolean.True)
|
|
gridView.OptionsView.AllowCellMerge = true;
|
|
gridColumn.FieldName = row["fieldname"].ToString();
|
|
gridColumn.Name = row["fieldname"].ToString();
|
|
gridColumn.VisibleIndex = i;
|
|
gridColumn.Caption = row["username1"].ToString();
|
|
gridColumn.Width = Convert.ToInt32(row["width"]);
|
|
gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList;
|
|
int sqltag = Convert.ToInt32(row["fieldsqlTag"]);
|
|
|
|
if (UnAllowEditChangeColor)
|
|
{
|
|
if (Convert.ToInt32(row["edit"]) == 1)
|
|
{
|
|
gridColumn.AppearanceHeader.Options.UseForeColor = true;
|
|
gridColumn.AppearanceHeader.ForeColor = ColorTranslator.FromHtml(headerColor);
|
|
}
|
|
}
|
|
if (sqltag == 8)
|
|
{
|
|
CreatePassword(gridColumn);
|
|
}
|
|
|
|
//备注框自动换行
|
|
if (sqltag == 9)
|
|
{
|
|
GetMemoEdit(gridColumn, gridControl);
|
|
}
|
|
if (sqltag == 10)
|
|
{
|
|
gridColumn.Tag = "www";
|
|
}
|
|
if (sqltag == 11)
|
|
{
|
|
gridColumn.Tag = "qq";
|
|
}
|
|
if (sqltag == 20)
|
|
{
|
|
GetMemoExEdit(gridColumn, gridControl);
|
|
}
|
|
if (sqltag == 37)
|
|
{
|
|
InitRichEdit(gridColumn);
|
|
}
|
|
gridColumn.Visible = ((Convert.ToInt32(row["width"]) > 0));
|
|
if (i == 0)
|
|
{
|
|
gridColumn.OptionsColumn.AllowShowHide = false;
|
|
}
|
|
string unionFields = row["unionFields"] + "";
|
|
string unionValue = row["unionValue"] + "";
|
|
//gridColumn.OptionsColumn.ReadOnly = false;
|
|
gridColumn.OptionsColumn.AllowEdit = Convert.ToInt32(row["edit"]) != 1;
|
|
gridView.Columns.Add(gridColumn);
|
|
int fieldsqlTag = Convert.ToInt32(row["fieldsqlTag"]);
|
|
|
|
gridColumn.Tag = new MyTagModel() { DefaultValue = row["defaultdate"].ToString(), Tag = gridColumn.Tag, calcExpr = row["calcExpr"].ToString(), unionFields = unionFields, unionValue = unionValue, lookupSql = row["fieldsql"] + "", lookupKey = row["fieldsqlid"] + "", lookupValue = row["fieldsqlname"] + "", fieldTypeId = fieldsqlTag };
|
|
|
|
//if (fieldsqlTag == 1 || fieldsqlTag == 5) {
|
|
// GetLookUpEdit(row["fieldsql"].ToString(), row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue);
|
|
//}
|
|
//if (fieldsqlTag == 2 || fieldsqlTag == 6) {
|
|
// GetLookUpEdit(row["fieldsql"].ToString(), row["fieldsqlname"].ToString(), row["fieldsqlid"] + "", row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue);
|
|
//}
|
|
int fieldTypeId = Convert.ToInt32(row["fieldsqlTag"]);
|
|
string lookupSql = row["fieldsql"] + "";
|
|
string lookupKeyField = row["fieldsqlid"] + "";
|
|
string lookupResult = row["fieldsqlname"] + "";
|
|
string fieldName = row["fieldName"] + "";
|
|
if ((fieldsqlTag == 1) || (fieldsqlTag == 3))
|
|
{
|
|
GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, gridControl);
|
|
}
|
|
if ((fieldsqlTag == 2) || (fieldsqlTag == 23))
|
|
{
|
|
GetComboBox(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId);
|
|
}
|
|
if ((fieldsqlTag == 5) || (fieldsqlTag == 15))
|
|
{
|
|
GetLookUpEdit(row["fieldsql"].ToString(), row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue);
|
|
}
|
|
if ((fieldsqlTag == 6) || (fieldsqlTag == 16))
|
|
{
|
|
GetLookUpEdit(row["fieldsql"].ToString(), row["fieldsqlname"].ToString(), row["fieldsqlid"] + "", row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue);
|
|
}
|
|
if (fieldsqlTag == 96)
|
|
{
|
|
GetProgressBar(gridColumn);
|
|
}
|
|
if (fieldsqlTag == 17)
|
|
{
|
|
GetCheckColumn(gridColumn);
|
|
}
|
|
if (fieldsqlTag == 99)
|
|
{
|
|
InitPicEdit(gridColumn);
|
|
}
|
|
if (fieldsqlTag == 18 || fieldsqlTag == 19)
|
|
{
|
|
GetCheckComboColumn(row["fieldsql"].ToString(), row["fieldsqlid"] + "", row["fieldsqlname"].ToString(), row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue);
|
|
}
|
|
if (fieldsqlTag == 10)
|
|
{
|
|
GetHyperLink(gridColumn);
|
|
}
|
|
// 日期时间控件
|
|
if (fieldsqlTag == 4 ||
|
|
fieldsqlTag == 44 ||
|
|
fieldsqlTag == 444)
|
|
{
|
|
CreateDateTime(gridColumn, fieldsqlTag);
|
|
}
|
|
if (fieldsqlTag == ControlType.LabCalcText)
|
|
{
|
|
CreateCalc(gridColumn);
|
|
}
|
|
if (fieldsqlTag == 4444 ||
|
|
fieldsqlTag == 44444)
|
|
{
|
|
CreateTime(gridColumn, fieldsqlTag);
|
|
}
|
|
if (fieldsqlTag == 13 || fieldsqlTag == 14 || fieldsqlTag == 34)
|
|
{
|
|
CreateButtonEdit(gridColumn, row);
|
|
}
|
|
if (fieldTypeId == 33)
|
|
{
|
|
InitMutilEdit(gridColumn, row["fieldsql"].ToString(), lookupKeyField, lookupResult, fieldTypeId);
|
|
}
|
|
string dataFormat = row["DataFormat"] + "";
|
|
CommonUtils.DataFormat(gridColumn, dataFormat, fieldsqlTag);
|
|
|
|
DataColumn dc = dt.Columns["Accuracy"];
|
|
if (dc != null)
|
|
{
|
|
string Accuracy = dt.Rows[i]["Accuracy"] + "";
|
|
if (!string.IsNullOrEmpty(Accuracy) && Accuracy != "0")
|
|
{
|
|
gridColumn.DisplayFormat.FormatType = FormatType.Numeric;
|
|
gridColumn.DisplayFormat.FormatString = "F2";
|
|
}
|
|
}
|
|
DataColumn dcIsSum = dt.Columns["isSum"];
|
|
if (dcIsSum != null)
|
|
{
|
|
if (!String.IsNullOrEmpty(row["isSum"] + ""))
|
|
{
|
|
int isSum = Convert.ToInt32(row["isSum"]);
|
|
//处理统计
|
|
if (isSum == 1)
|
|
{
|
|
gridView.OptionsView.ShowFooter = true;
|
|
//if ((row["calcExpr"] + "").IndexOf("/{")==-1)
|
|
//{
|
|
string defaultFormat = "{0:" + dataFormat + "}";
|
|
if (dt.Columns.Contains("sumText") && !string.IsNullOrWhiteSpace(dt.Rows[i]["sumText"] + ""))
|
|
defaultFormat = dt.Rows[i]["sumText"] + "";
|
|
|
|
gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), defaultFormat) });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, defaultFormat) });
|
|
//}
|
|
//else
|
|
//{
|
|
// gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), "{0:" + dataFormat + "}") });
|
|
// gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), null, "{0:" + dataFormat + "}") });
|
|
//}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (gridView.Columns.Count > 0)
|
|
{
|
|
GridColumn firstColumn = gridView.Columns[0];
|
|
if (firstColumn != null)
|
|
{
|
|
gridView.OptionsView.ShowFooter = true;
|
|
firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), null, "合计: {0:#,###}行") });
|
|
}
|
|
}
|
|
}
|
|
|
|
private void InitMutilEdit(GridColumn gridColumn,string sql,string key,string value,int tagID)
|
|
{
|
|
FrmMain frmMain = new FrmMain();
|
|
String SQL = sql;
|
|
SQL = GetDefaultValue(SQL, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
Dictionary<string, string> Columns = new Dictionary<string, string>();
|
|
Columns.Add(key, "编码");
|
|
Columns.Add(value, "名称");
|
|
if (SQL.IndexOf("Remark", StringComparison.OrdinalIgnoreCase) != -1)
|
|
Columns.Add("Remark", "备注");
|
|
frmMain.IsMultiple = true;
|
|
frmMain.Columns = Columns;
|
|
int fieldsqlTag = tagID;
|
|
frmMain.ValueField = key;
|
|
frmMain.TextField = value;
|
|
frmMain.IsText = fieldsqlTag;
|
|
frmMain.sourceSQL = SQL;
|
|
frmMain.SQL = SQL;
|
|
string tmpsql = SQL;
|
|
tmpsql = Regex.Replace(SQL, "#[^##]+#", " 1=1 ");
|
|
DataTable dtb = SqlHelper.ExecuteDataSet(tmpsql).Tables[0];
|
|
//Dictionary<string, string> lookupDt = new Dictionary<string, string>();
|
|
//foreach (DataRow item in dtb.Rows)
|
|
//{
|
|
// //由于数据问题相同键值
|
|
// if (lookupDt.ContainsKey(item[frmMain.ValueField] + "")) continue;
|
|
// lookupDt.Add(item[frmMain.ValueField] + "", item[frmMain.TextField] + "");
|
|
//}
|
|
//lookupDatas.Add(gridColumn.FieldName, lookupDt);
|
|
|
|
RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit();
|
|
btnEdit.NullText = "";
|
|
btnEdit.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
btnEdit.AllowNullInput = DefaultBoolean.False;
|
|
btnEdit.DisplayMember = frmMain.TextField;
|
|
btnEdit.AutoHeight = false;
|
|
btnEdit.SeparatorChar = ',';
|
|
btnEdit.ValueMember = fieldsqlTag == ControlType.LabMultiSelectValue ||
|
|
fieldsqlTag == ControlType.LabMultiSelectValueParam ? frmMain.ValueField : frmMain.TextField;
|
|
|
|
btnEdit.DataSource = SqlHelper.ExecuteDataTable(tmpsql);
|
|
|
|
btnEdit.Buttons[0].Visible = false;
|
|
btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) });
|
|
|
|
btnEdit.Name = "btnEdit";
|
|
btnEdit.Tag = fieldsqlTag;
|
|
btnEdit.Buttons[1].Tag = frmMain;
|
|
//btnEdit.Tag = SQL;
|
|
btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.OnButtonEditClick);
|
|
gridControl.RepositoryItems.Add(btnEdit);
|
|
gridColumn.OptionsColumn.ReadOnly = true;
|
|
gridColumn.ColumnEdit = btnEdit;
|
|
|
|
}
|
|
public DataTable SetColumns3(string sql)
|
|
{
|
|
_currentSetColumnType = 3;
|
|
gridView.Columns.Clear();
|
|
DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0];
|
|
ColumnSQL = sql;
|
|
dtColumns = dt;
|
|
dt = ResetColumns(dt);
|
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
DataRow row = dt.Rows[i];
|
|
GridColumn gridColumn = new GridColumn();
|
|
gridColumn.OptionsColumn.AllowMerge = GetMergeFlag(row);
|
|
if (gridColumn.OptionsColumn.AllowMerge == DefaultBoolean.True)
|
|
gridView.OptionsView.AllowCellMerge = true;
|
|
gridColumn.FieldName = row["fieldname"].ToString();
|
|
gridColumn.Name = row["fieldname"].ToString();
|
|
gridColumn.VisibleIndex = i;
|
|
gridColumn.Caption = row["userName"].ToString();
|
|
gridColumn.Width = Convert.ToInt32(row["width"]);
|
|
gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList;
|
|
gridColumn.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
|
|
gridColumn.Visible = ((Convert.ToInt32(row["width"]) > 0));
|
|
string dataFormat = row["DataFormat"] + "";
|
|
object obj = dt.Columns["isedited"];
|
|
if (obj != null && Convert.ToInt32(row["isedited"] + "" == "" ? "0" : row["isedited"]) == 1)
|
|
{
|
|
gridColumn.OptionsColumn.AllowEdit = false;
|
|
gridColumn.OptionsColumn.ReadOnly = true;
|
|
if (UnAllowEditChangeColor)
|
|
{
|
|
gridColumn.AppearanceHeader.Options.UseForeColor = true;
|
|
gridColumn.AppearanceHeader.ForeColor = ColorTranslator.FromHtml(headerColor);
|
|
}
|
|
}
|
|
if (dt.Columns.Contains("isSum"))
|
|
{
|
|
int isSum = string.IsNullOrEmpty(row["isSum"] + "") ? 0 : Convert.ToInt32(row["isSum"]);
|
|
//处理统计
|
|
if (isSum == 1)
|
|
{
|
|
string defaultFormat = "{0:" + dataFormat + "}";
|
|
if (dt.Columns.Contains("sumText") && !string.IsNullOrWhiteSpace(dt.Rows[i]["sumText"] + ""))
|
|
defaultFormat = dt.Rows[i]["sumText"] + "";
|
|
|
|
gridView.OptionsView.ShowFooter = true;
|
|
//gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), "{0}") });
|
|
//gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, "") });
|
|
//if ((row["calcExpr"] + "").IndexOf("/{") == -1)
|
|
//{
|
|
gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), defaultFormat) });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, defaultFormat) });
|
|
//}
|
|
//else
|
|
//{
|
|
// gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), "{0:" + dataFormat + "}") });
|
|
// gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), null, "{0:" + dataFormat + "}") });
|
|
//}
|
|
}
|
|
}
|
|
gridView.Columns.Add(gridColumn);
|
|
int fieldTypeId = Convert.ToInt32(row["fieldTypeId"]);
|
|
string lookupSql = row["lookupSql"] + "";
|
|
string lookupKeyField = row["lookupKeyField"] + "";
|
|
string lookupResult = row["lookupResult"] + "";
|
|
string fieldName = row["fieldName"] + "";
|
|
string unionFields = row["unionFields"] + "";
|
|
string unionValue = row["unionValue"] + "";
|
|
//if (fieldTypeId == 1 || fieldTypeId == 5 || fieldTypeId == 15)
|
|
//{
|
|
// GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue);
|
|
//}
|
|
//if (fieldTypeId == 2 || fieldTypeId == 6 || fieldTypeId == 16)
|
|
//{
|
|
// GetLookUpEdit(lookupSql, lookupResult, lookupKeyField, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue);
|
|
//}
|
|
if (fieldTypeId == 1)
|
|
{
|
|
GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, gridControl);
|
|
}
|
|
if ((fieldTypeId == 2) || (fieldTypeId == 23))
|
|
{
|
|
GetComboBox(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId);
|
|
}
|
|
if (fieldTypeId == 5 || fieldTypeId == 15)
|
|
{
|
|
GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue);
|
|
}
|
|
if (fieldTypeId == 6 || fieldTypeId == 16)
|
|
{
|
|
GetLookUpEdit(lookupSql, lookupResult, lookupKeyField, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue);
|
|
}
|
|
if (fieldTypeId == 96)
|
|
{
|
|
GetProgressBar(gridColumn);
|
|
}
|
|
if (fieldTypeId == 17)
|
|
{
|
|
GetCheckColumn(gridColumn);
|
|
}
|
|
if (fieldTypeId == 18 || fieldTypeId == 19)
|
|
{
|
|
GetCheckComboColumn(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue);
|
|
}
|
|
// 日期时间控件
|
|
if (fieldTypeId == 4 ||
|
|
fieldTypeId == 44 ||
|
|
fieldTypeId == 444)
|
|
{
|
|
CreateDateTime(gridColumn, fieldTypeId);
|
|
}
|
|
if (fieldTypeId == ControlType.LabCalcText)
|
|
{
|
|
CreateCalc(gridColumn);
|
|
}
|
|
if (fieldTypeId == 4444 ||
|
|
fieldTypeId == 44444)
|
|
{
|
|
CreateTime(gridColumn, fieldTypeId);
|
|
}
|
|
if (fieldTypeId == 13 || fieldTypeId == 14)
|
|
{
|
|
CreateButtonEdit2(gridColumn, row);
|
|
}
|
|
if (fieldTypeId == 33)
|
|
{
|
|
InitMutilEdit(gridColumn, row);
|
|
}
|
|
//QQ和网址
|
|
if (fieldTypeId == 10)
|
|
{
|
|
GetHyperLink(gridColumn);
|
|
gridColumn.Tag = "www";
|
|
}
|
|
if (fieldTypeId == 11)
|
|
{
|
|
gridColumn.Tag = "qq";
|
|
}
|
|
//if (fieldTypeId == ControlType.LabMultiSelectValue)
|
|
//{
|
|
// GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, gridControl);
|
|
//}
|
|
if (fieldTypeId == 37)
|
|
{
|
|
InitRichEdit(gridColumn);
|
|
}
|
|
//备注框自动换行
|
|
if (fieldTypeId == 9)
|
|
{
|
|
GetMemoEdit(gridColumn, gridControl);
|
|
}
|
|
if (fieldTypeId == 20)
|
|
{
|
|
GetMemoExEdit(gridColumn, gridControl);
|
|
}
|
|
if (fieldTypeId == 99)
|
|
{
|
|
InitPicEdit(gridColumn);
|
|
}
|
|
gridColumn.Tag = new MyTagModel() { DefaultValue = row["DefaultValue"].ToString(), Tag = gridColumn.Tag, calcExpr = row["calcExpr"].ToString(), unionFields = unionFields, unionValue = unionValue, lookupSql = lookupSql, lookupKey = lookupKeyField, lookupValue = lookupResult, fieldTypeId = fieldTypeId };
|
|
CommonUtils.DataFormat(gridColumn, row["DataFormat"] + "", fieldTypeId);
|
|
}
|
|
if (gridView.Columns.Count > 0)
|
|
{
|
|
GridColumn firstColumn = gridView.Columns[0];
|
|
if (firstColumn != null)
|
|
{
|
|
gridView.OptionsView.ShowFooter = true;
|
|
firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), null, "合计: {0:#,###}行") });
|
|
}
|
|
}
|
|
return dt;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:表格图片控件</para>
|
|
/// <para>创建人:姜棚</para>
|
|
/// <para>创建日期:2018-08-02 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
private void InitPicEdit(GridColumn gridColumn)
|
|
{
|
|
RepositoryItemPictureEdit picEdit = new RepositoryItemPictureEdit();
|
|
picEdit.AutoHeight = true;
|
|
picEdit.BestFitWidth = 16;
|
|
picEdit.CustomHeight = 16;
|
|
gridColumn.ColumnEdit = picEdit;
|
|
}
|
|
private void InitMutilEdit(GridColumn gridColumn, DataRow row)
|
|
{
|
|
FrmMain frmMain = new FrmMain();
|
|
String SQL = row["lookupSql"].ToString();
|
|
SQL = GetDefaultValue(SQL, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
Dictionary<string, string> Columns = new Dictionary<string, string>();
|
|
Columns.Add(row["lookupKeyField"].ToString(), "编码");
|
|
Columns.Add(row["lookupResult"].ToString(), "名称");
|
|
if (SQL.IndexOf("Remark", StringComparison.OrdinalIgnoreCase) != -1)
|
|
Columns.Add("Remark", "备注");
|
|
frmMain.IsMultiple = true;
|
|
frmMain.Columns = Columns;
|
|
int fieldsqlTag = Convert.ToInt32(row["fieldTypeId"]);
|
|
frmMain.ValueField = row["lookupKeyField"] + "";
|
|
frmMain.TextField = row["lookupResult"] + "";
|
|
frmMain.IsText = fieldsqlTag;
|
|
frmMain.sourceSQL = SQL;
|
|
frmMain.SQL = SQL;
|
|
string tmpsql = SQL;
|
|
tmpsql = Regex.Replace(SQL, "#[^##]+#", " 1=1 ");
|
|
DataTable dtb = SqlHelper.ExecuteDataSet(tmpsql).Tables[0];
|
|
//Dictionary<string, string> lookupDt = new Dictionary<string, string>();
|
|
//foreach (DataRow item in dtb.Rows)
|
|
//{
|
|
// //由于数据问题相同键值
|
|
// if (lookupDt.ContainsKey(item[frmMain.ValueField] + "")) continue;
|
|
// lookupDt.Add(item[frmMain.ValueField] + "", item[frmMain.TextField] + "");
|
|
//}
|
|
//lookupDatas.Add(gridColumn.FieldName, lookupDt);
|
|
|
|
RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit();
|
|
btnEdit.NullText = "";
|
|
btnEdit.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
btnEdit.AllowNullInput = DefaultBoolean.False;
|
|
btnEdit.DisplayMember = frmMain.TextField;
|
|
btnEdit.AutoHeight = false;
|
|
btnEdit.SeparatorChar = ',';
|
|
btnEdit.ValueMember = fieldsqlTag == ControlType.LabMultiSelectValue ||
|
|
fieldsqlTag == ControlType.LabMultiSelectValueParam ? frmMain.ValueField : frmMain.TextField;
|
|
|
|
btnEdit.DataSource = SqlHelper.ExecuteDataTable(tmpsql);
|
|
|
|
btnEdit.Buttons[0].Visible = false;
|
|
btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) });
|
|
|
|
btnEdit.Name = "btnEdit";
|
|
btnEdit.Tag = fieldsqlTag;
|
|
btnEdit.Buttons[1].Tag = frmMain;
|
|
//btnEdit.Tag = SQL;
|
|
btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.OnButtonEditClick);
|
|
gridControl.RepositoryItems.Add(btnEdit);
|
|
gridColumn.OptionsColumn.ReadOnly = true;
|
|
gridColumn.ColumnEdit = btnEdit;
|
|
|
|
}
|
|
protected void OnButtonEditClick(object sender, ButtonPressedEventArgs e)
|
|
{
|
|
CheckedComboBoxEdit btnEdit = (CheckedComboBoxEdit)sender;
|
|
FrmMain frmMain = e.Button.Tag as FrmMain;
|
|
|
|
if (frmMain.IsText == ControlType.LabMultiSelectValue || frmMain.IsText == ControlType.LabMultiSelectValueParam)
|
|
frmMain.ReturnValue = btnEdit.EditValue + "";
|
|
else
|
|
frmMain.ReturnText = btnEdit.Text;
|
|
|
|
var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle);
|
|
if (focusRow != null)
|
|
{
|
|
string tmpsql = frmMain.sourceSQL + "";
|
|
|
|
tmpsql = tmpsql.Replace("#", "").Replace("#", "");
|
|
var fieldParams = GetParamValue(tmpsql);
|
|
|
|
//从单据头取值
|
|
if (pnlMain != null)
|
|
{
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
Control[] ctl = pnlMain.Controls.Find("txt_" + fieldName, true);
|
|
if ((ctl != null) && (ctl.Length > 0))
|
|
{
|
|
string fieldValue = GetControlText(ctl[0]);
|
|
tmpsql = tmpsql.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
//从选中行取值
|
|
fieldParams = GetParamValue(tmpsql);
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
string fieldValue = focusRow[fieldName] + "";
|
|
tmpsql = tmpsql.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
frmMain.SQL = tmpsql;
|
|
}
|
|
|
|
DialogResult dr = frmMain.ShowDialog();
|
|
if (dr == DialogResult.OK)
|
|
{
|
|
btnEdit.EditValue = frmMain.ReturnValue;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 初始化富文本控件
|
|
/// </summary>
|
|
private void InitRichEdit(GridColumn gridColumn)
|
|
{
|
|
gridColumn.AppearanceCell.Options.UseFont = true;
|
|
gridColumn.AppearanceCell.Font = new Font("宋体", 15f);
|
|
RepositoryItemRichTextEdit richEdit = new RepositoryItemRichTextEdit();
|
|
richEdit.Appearance.Font = new Font("宋体", 15f);
|
|
gridControl.RepositoryItems.Add(richEdit);
|
|
gridColumn.ColumnEdit = richEdit;
|
|
}
|
|
|
|
private void CreateButtonEdit2(GridColumn gridColumn, DataRow row)
|
|
{
|
|
FrmMain frmMain = new FrmMain();
|
|
String SQL = row["lookupSql"].ToString();
|
|
SQL = GetDefaultValue(SQL, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
Dictionary<string, string> Columns = new Dictionary<string, string>();
|
|
Columns.Add(row["lookupKeyField"].ToString(), "编码");
|
|
Columns.Add(row["lookupResult"].ToString(), "名称");
|
|
if (SQL.IndexOf("Remark", StringComparison.OrdinalIgnoreCase) != -1)
|
|
Columns.Add("Remark", "备注");
|
|
frmMain.IsMultiple = true;
|
|
frmMain.Columns = Columns;
|
|
int fieldsqlTag = Convert.ToInt32(row["fieldTypeId"]);
|
|
frmMain.ValueField = row["lookupKeyField"] + "";
|
|
frmMain.TextField = row["lookupResult"] + "";
|
|
frmMain.IsText = fieldsqlTag;
|
|
frmMain.sourceSQL = SQL;
|
|
frmMain.SQL = SQL;
|
|
string tmpsql = SQL;
|
|
tmpsql = Regex.Replace(SQL, "#[^##]+#", " 1=1 ");
|
|
DataTable dtb = SqlHelper.ExecuteDataSet(tmpsql).Tables[0];
|
|
Dictionary<string, string> lookupDt = new Dictionary<string, string>();
|
|
foreach (DataRow item in dtb.Rows)
|
|
{
|
|
//由于数据问题相同键值
|
|
if (lookupDt.ContainsKey(item[frmMain.ValueField] + "")) continue;
|
|
lookupDt.Add(item[frmMain.ValueField] + "", item[frmMain.TextField] + "");
|
|
}
|
|
lookupDatas.Add(gridColumn.FieldName, lookupDt);
|
|
|
|
RepositoryItemButtonEdit btnEdit = new RepositoryItemButtonEdit();
|
|
btnEdit.AutoHeight = false;
|
|
btnEdit.Buttons[0].Tag = frmMain;
|
|
btnEdit.Name = "btnEdit";
|
|
btnEdit.Tag = fieldsqlTag;
|
|
//btnEdit.Tag = SQL;
|
|
btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.btnEdit_ButtonClick);
|
|
gridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { btnEdit });
|
|
gridColumn.OptionsColumn.ReadOnly = true;
|
|
gridColumn.ColumnEdit = btnEdit;
|
|
}
|
|
private void CreateDateTime(GridColumn gridColumn, int fieldsqlTag)
|
|
{
|
|
RepositoryItemDateEdit dateEdit = new RepositoryItemDateEdit();
|
|
dateEdit.DisplayFormat.FormatString = dateEdit.EditFormat.FormatString = dateEdit.Mask.EditMask = DateFormatType.GetFormatValue(fieldsqlTag);
|
|
dateEdit.DisplayFormat.FormatType = dateEdit.EditFormat.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
|
|
dateEdit.Closed += new ClosedEventHandler(dateEdit_Closed);
|
|
|
|
gridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { dateEdit });
|
|
gridColumn.ColumnEdit = dateEdit;
|
|
}
|
|
private void CreateTime(GridColumn gridColumn, int fieldsqlTag)
|
|
{
|
|
RepositoryItemTimeEdit timeEdit = new RepositoryItemTimeEdit();
|
|
timeEdit.DisplayFormat.FormatString = timeEdit.EditFormat.FormatString = timeEdit.Mask.EditMask = DateFormatType.GetFormatValue(fieldsqlTag);
|
|
timeEdit.DisplayFormat.FormatType = timeEdit.EditFormat.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
|
|
gridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { timeEdit });
|
|
gridColumn.ColumnEdit = timeEdit;
|
|
}
|
|
/// <summary>
|
|
/// 计算器
|
|
/// </summary>
|
|
/// <param name="gridColumn"></param>
|
|
private void CreateCalc(GridColumn gridColumn)
|
|
{
|
|
RepositoryItemCalcEdit calcEdit = new RepositoryItemCalcEdit();
|
|
calcEdit.AllowMouseWheel = false;
|
|
gridColumn.ColumnEdit = calcEdit;
|
|
}
|
|
|
|
private void CreatePassword(GridColumn gridColumn)
|
|
{
|
|
RepositoryItemTextEdit passEdit = new RepositoryItemTextEdit();
|
|
passEdit.UseSystemPasswordChar = true;
|
|
passEdit.PasswordChar = '*';
|
|
|
|
gridColumn.ColumnEdit = passEdit;
|
|
}
|
|
|
|
private void dateEdit_Closed(object sender, ClosedEventArgs e)
|
|
{
|
|
if (sender is DateEdit)
|
|
{
|
|
DateEdit dateEdit = (sender as DateEdit);
|
|
string dateFormatType = dateEdit.Properties.DisplayFormat.FormatString;
|
|
if (!string.IsNullOrEmpty(dateEdit.SelectedText))
|
|
{
|
|
dateEdit.EditValue = dateEdit.DateTime.ToString(dateFormatType);
|
|
}
|
|
}
|
|
}
|
|
#region 智能搜索框事件处理
|
|
|
|
/// <summary>
|
|
/// 取指定组件值
|
|
/// </summary>
|
|
/// <param name="parent"></param>
|
|
/// <param name="list"></param>
|
|
public static string GetControlText(Control control)
|
|
{
|
|
if (control == null)
|
|
return "";
|
|
if (control.Tag == null)
|
|
{
|
|
return control.Text;
|
|
}
|
|
ControlModelTag cmTag = control.Tag as ControlModelTag;
|
|
if (cmTag.fieldTypeId == ControlType.LabAutoSeacherText)
|
|
{
|
|
return control.Text;
|
|
}
|
|
else if ((cmTag.fieldTypeId == ControlType.LabAutoSeacherValue) ||
|
|
(cmTag.fieldTypeId == ControlType.LabComboxValueParam))
|
|
{
|
|
AutoSearcher te = control as AutoSearcher;
|
|
|
|
return te.ReturnValue.ToString();
|
|
}
|
|
else if (cmTag.fieldTypeId == ControlType.LabMultiSelectValue)
|
|
{
|
|
LabelLookUp lookup = control as LabelLookUp;
|
|
return lookup.ReturnValue;
|
|
}
|
|
else if (cmTag.fieldTypeId == ControlType.LabComboxValue)
|
|
{
|
|
LabelComboxEx Cb = control as LabelComboxEx;
|
|
return Cb.getComboBox.SelectedValue + "";
|
|
}
|
|
else if (cmTag.fieldTypeId == ControlType.LabComboxText)
|
|
{
|
|
LabelComboxEx Cb = control as LabelComboxEx;
|
|
return Cb.getComboBox.Text;
|
|
}
|
|
else if (cmTag.fieldTypeId == ControlType.LabDate ||
|
|
cmTag.fieldTypeId == ControlType.LabDateTime ||
|
|
cmTag.fieldTypeId == ControlType.LabDateTimeShort ||
|
|
cmTag.fieldTypeId == ControlType.LabTime ||
|
|
cmTag.fieldTypeId == ControlType.LabShortTime)
|
|
{
|
|
LabelDateEx Cb = control as LabelDateEx;
|
|
return Cb.GetDateTimePicker.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
|
}
|
|
else if (cmTag.fieldTypeId == ControlType.LabTextInt)
|
|
{
|
|
if ((control.Text.Trim() == ""))
|
|
return "0";
|
|
else
|
|
return control.Text;
|
|
}
|
|
else
|
|
{
|
|
if (cmTag.fieldTypeId != 99)
|
|
{
|
|
return control.Text;
|
|
}
|
|
}
|
|
return "0";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 动态加载数据源
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void lookUp_QueryPopUp(object sender, CancelEventArgs e)
|
|
{
|
|
if (sender is SearchLookUpEdit)
|
|
{
|
|
var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle);
|
|
if (true)
|
|
{
|
|
SearchLookUpEdit edit = (sender as SearchLookUpEdit);
|
|
LookUpTag lookUpTag = edit.Properties.Tag as LookUpTag;
|
|
|
|
if (lookUpTag != null && !string.IsNullOrEmpty(lookUpTag.Sql))
|
|
{
|
|
string sqlValue = lookUpTag.Sql.Replace("#", "").Replace("#", "");
|
|
var fieldParams = GetParamValue(sqlValue);
|
|
|
|
//从单据头取值
|
|
if (pnlMain != null)
|
|
{
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
Control[] ctl = pnlMain.Controls.Find("txt_" + fieldName, true);
|
|
if ((ctl != null) && (ctl.Length > 0))
|
|
{
|
|
string fieldValue = GetControlText(ctl[0]);
|
|
sqlValue = sqlValue.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
//从选中行取值
|
|
if (focusRow != null)
|
|
{
|
|
fieldParams = GetParamValue(sqlValue);
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
fieldName = fieldName.Replace("&", "");
|
|
if (focusRow.Table.Columns.Contains(fieldName))
|
|
{
|
|
string fieldValue = focusRow[fieldName] + "";
|
|
sqlValue = sqlValue.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//MessageBox.Show(sqlValue);
|
|
DataTable dtTable = SqlHelper.ExecuteDataSet(sqlValue).Tables[0];
|
|
edit.Properties.DataSource = dtTable;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 关联搜索
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void lookUp_EditValueChanged(object sender, EventArgs e)
|
|
{
|
|
return;
|
|
if (sender is SearchLookUpEdit)
|
|
{
|
|
SearchLookUpEdit edit = (sender as SearchLookUpEdit);
|
|
LookUpTag lookUpTag = edit.Properties.Tag as LookUpTag;
|
|
var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle);
|
|
if (focusRow != null && lookUpTag != null)
|
|
{
|
|
string columnName = lookUpTag.ColumnName;
|
|
string unionFields = lookUpTag.unionFields;
|
|
string unionValue = lookUpTag.unionValue;
|
|
string valueMember = lookUpTag.ValueMember;
|
|
string displayMember = lookUpTag.DisplayMember;
|
|
|
|
unionValue = ReqSqlParam(unionValue, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
string cellValue = string.IsNullOrEmpty(edit.EditValue + "") ? "" : edit.EditValue.ToString();
|
|
unionValue = unionValue.Replace("{" + columnName + "}", cellValue);
|
|
|
|
var fieldParams = GetParamValue(unionValue);
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
string fieldValue = focusRow[fieldName] + "";
|
|
unionValue = unionValue.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
DataTable dtTable = SqlHelper.ExecuteDataSet(unionValue).Tables[0];
|
|
if (dtTable.Rows.Count > 0)
|
|
{
|
|
DataRow row = dtTable.Rows[0];
|
|
string[] unionFieldSplit = unionFields.Split(',');
|
|
for (int i = 0; i < unionFieldSplit.Count(); i++)
|
|
{
|
|
string fieldName = unionFieldSplit[i];
|
|
gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns[fieldName], row[fieldName]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string[] unionFieldSplit = unionFields.Split(',');
|
|
for (int i = 0; i < unionFieldSplit.Count(); i++)
|
|
{
|
|
string fieldName = unionFieldSplit[i];
|
|
gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns[fieldName], null);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void CreateButtonEdit(GridColumn gridColumn, DataRow row)
|
|
{
|
|
FrmMain frmMain = new FrmMain();
|
|
String SQL = row["fieldsql"].ToString();
|
|
SQL = GetDefaultValue(SQL, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
Dictionary<string, string> Columns = new Dictionary<string, string>();
|
|
Columns.Add(row["fieldsqlid"].ToString(), "编码");
|
|
Columns.Add(row["fieldsqlname"].ToString(), "名称");
|
|
if (SQL.IndexOf("Remark", StringComparison.OrdinalIgnoreCase) != -1)
|
|
Columns.Add("Remark", "备注");
|
|
frmMain.IsMultiple = true;
|
|
frmMain.Columns = Columns;
|
|
int fieldsqlTag = Convert.ToInt32(row["fieldsqlTag"]);
|
|
frmMain.ValueField = row["fieldsqlid"] + "";
|
|
frmMain.TextField = row["fieldsqlname"] + "";
|
|
frmMain.IsText = fieldsqlTag;
|
|
frmMain.SQL = SQL;
|
|
frmMain.sourceSQL = SQL;
|
|
|
|
// 多选
|
|
if ((fieldsqlTag == 33 || fieldsqlTag == 34) && SQL.Contains("#"))
|
|
{
|
|
SQL = Regex.Replace(SQL, "#[^##]+#", " 1<>1 ");
|
|
}
|
|
|
|
DataTable dtb = SqlHelper.ExecuteDataSet(SQL).Tables[0];
|
|
if (!lookupDatas.ContainsKey(gridColumn.FieldName))
|
|
{
|
|
lookupTables.Add(gridColumn.FieldName, dtb);
|
|
}
|
|
Dictionary<string, string> lookupDt = new Dictionary<string, string>();
|
|
foreach (DataRow item in dtb.Rows)
|
|
{
|
|
lookupDt.Add(item[frmMain.ValueField] + "", item[frmMain.TextField] + "");
|
|
}
|
|
|
|
if (!lookupDatas.ContainsKey(gridColumn.FieldName))
|
|
{
|
|
lookupDatas.Add(gridColumn.FieldName, lookupDt);
|
|
}
|
|
RepositoryItemButtonEdit btnEdit = new RepositoryItemButtonEdit();
|
|
btnEdit.AutoHeight = false;
|
|
btnEdit.Buttons[0].Tag = frmMain;
|
|
btnEdit.Name = "btnEdit";
|
|
btnEdit.Tag = fieldsqlTag;
|
|
btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.btnEdit_ButtonClick);
|
|
gridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { btnEdit });
|
|
gridColumn.OptionsColumn.ReadOnly = true;
|
|
gridColumn.ColumnEdit = btnEdit;
|
|
}
|
|
|
|
void btnEdit_ButtonClick(object sender, ButtonPressedEventArgs e)
|
|
{
|
|
ButtonEdit btnEdit = (ButtonEdit)sender;
|
|
FrmMain frmMain = (FrmMain)e.Button.Tag;
|
|
if (frmMain.IsText == 13 || frmMain.IsText == 33)
|
|
{
|
|
frmMain.ReturnValue = btnEdit.Text;
|
|
}
|
|
else
|
|
{
|
|
frmMain.ReturnText = btnEdit.Text;
|
|
}
|
|
|
|
|
|
var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle);
|
|
if (focusRow != null)
|
|
{
|
|
string tmpsql = frmMain.sourceSQL + "";
|
|
|
|
tmpsql = tmpsql.Replace("#", "").Replace("#", "");
|
|
var fieldParams = GetParamValue(tmpsql);
|
|
|
|
//从单据头取值
|
|
if (pnlMain != null)
|
|
{
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
Control[] ctl = pnlMain.Controls.Find("txt_" + fieldName, true);
|
|
if ((ctl != null) && (ctl.Length > 0))
|
|
{
|
|
string fieldValue = GetControlText(ctl[0]);
|
|
tmpsql = tmpsql.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
//从选中行取值
|
|
fieldParams = GetParamValue(tmpsql);
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
string fieldValue = focusRow[fieldName] + "";
|
|
tmpsql = tmpsql.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
frmMain.SQL = tmpsql;
|
|
}
|
|
|
|
DialogResult dr = frmMain.ShowDialog();
|
|
if (dr == DialogResult.OK)
|
|
{
|
|
String value = string.Empty;
|
|
if (frmMain.IsText == 13 || frmMain.IsText == 33)
|
|
{
|
|
value = frmMain.ReturnValue;
|
|
}
|
|
else
|
|
{
|
|
value = frmMain.ReturnText;
|
|
}
|
|
btnEdit.Text = value;
|
|
}
|
|
}
|
|
|
|
//private void GetComboBox(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag) {
|
|
// RepositoryItemComboBox combobox = new RepositoryItemComboBox();
|
|
// sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
// DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0];
|
|
// foreach (DataRow item in dt.Rows)
|
|
// combobox.Items.Add(item[value]);
|
|
// gc.ColumnEdit = combobox;
|
|
//}
|
|
|
|
#region 获取参数
|
|
public static List<string> GetParamValue(string param)
|
|
{
|
|
string SqlParamRegex = "{([^{])+}";
|
|
List<string> list = new List<string>();
|
|
Regex regex = new Regex(SqlParamRegex);
|
|
MatchCollection mcs = regex.Matches(param);
|
|
foreach (Match item in mcs)
|
|
{
|
|
list.Add(item.Value);
|
|
}
|
|
return list;
|
|
}
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
/// 获取默认值
|
|
/// </summary>
|
|
/// <param name="defaultValue"></param>
|
|
/// <returns></returns>
|
|
public static string GetDefaultValue(string defaultValue, string LoginId, string LoginName)
|
|
{
|
|
string result = defaultValue;
|
|
|
|
if (defaultValue.IndexOf("loginid", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
List<string> list = GetParamValue(defaultValue);
|
|
foreach (string s in list)
|
|
{
|
|
if (s.IndexOf("loginid", StringComparison.OrdinalIgnoreCase) != -1)
|
|
result = result.Replace(s, LoginId);
|
|
}
|
|
}
|
|
if (defaultValue.IndexOf("loginname", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
List<string> list = GetParamValue(defaultValue);
|
|
foreach (string s in list)
|
|
{
|
|
if (s.IndexOf("loginname", StringComparison.OrdinalIgnoreCase) != -1)
|
|
result = result.Replace(s, LoginName);
|
|
}
|
|
}
|
|
|
|
if (result.IndexOf('@') != -1)
|
|
{
|
|
|
|
object obj = SqlHelper.ExecuteScalar(CommandType.Text, result.Replace("@", ""));
|
|
if (obj != null)
|
|
{
|
|
result = obj.ToString();
|
|
}
|
|
}
|
|
if (result == "guid")
|
|
{
|
|
result = Guid.NewGuid().ToString();
|
|
}
|
|
////代表传入其他参数格式{#p_1},{#p_2}..
|
|
//if (defaultValue.IndexOf("#p_", StringComparison.OrdinalIgnoreCase) != -1)
|
|
//{
|
|
// List<string> list = PubClass.GetParamValue(defaultValue);
|
|
// foreach (string s in list)
|
|
// {
|
|
// string idx = s.Replace("{#p_", "").Replace("}", "");
|
|
// int i = 0;
|
|
// if (int.TryParse(idx, out i))
|
|
// {
|
|
// result = result.Replace(s, otherParams[i - 1]);
|
|
// }
|
|
// }
|
|
//}
|
|
return result;
|
|
}
|
|
|
|
public static string ReqSqlParam(string sql, string OperatorId, string OperatorName)
|
|
{
|
|
string sourceSql = sql;
|
|
List<string> listParm = GetParamValue(sql);
|
|
foreach (string s in listParm)
|
|
{
|
|
if (s.IndexOf("loginid", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
sourceSql = sourceSql.Replace(s, OperatorId);
|
|
}
|
|
if (s.IndexOf("loginname", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
sourceSql = sourceSql.Replace(s, OperatorName);
|
|
}
|
|
if (s.IndexOf("groupid", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
sourceSql = sourceSql.Replace(s, ERPInfo.Instance.GroupId);
|
|
}
|
|
}
|
|
return sourceSql;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 替换sql
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static string ReqSqlWhere(DataRow row, string param)
|
|
{
|
|
List<string> listParm = GetParamValue(param);
|
|
foreach (string s in listParm)
|
|
{
|
|
string filedName = s.Replace("{", "").Replace("}", "");
|
|
param = param.Replace(s, row[filedName].ToString());
|
|
}
|
|
param = ReqExecuteProc(param);
|
|
return SqlToCode(param);
|
|
}
|
|
|
|
public static string ReqExecuteProc(string param)
|
|
{
|
|
string result = param;
|
|
if (param.IndexOf("!", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
result = result.Replace("!", "").Replace("(", " ").Replace(")", "");
|
|
DataTable dt = SqlHelper.ExecuteDataSet(CommandType.Text, "exec " + result, "temp").Tables[0];
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
result = (dt.Rows[0][0] + "" == "") || (dt.Rows[0][0] + "" == "0") ? "false" : "true";
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private void GetComboBox(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag)
|
|
{
|
|
string tmpsql = sql;
|
|
tmpsql = ReqSqlParam(tmpsql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
RepositoryItemComboBox combobox = new RepositoryItemComboBox();
|
|
combobox.ImmediatePopup = true;
|
|
combobox.PopupSizeable = true;
|
|
combobox.DropDownRows = 20;
|
|
combobox.DropDownItemHeight = 20;
|
|
combobox.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
combobox.Tag = value + "^" + tmpsql;
|
|
tmpsql = Regex.Replace(tmpsql, "#[^##]+#", " 1=1 ");
|
|
if (fieldsqlTag != 23)
|
|
{
|
|
DataTable dt = SqlHelper.ExecuteDataSet(tmpsql).Tables[0];
|
|
foreach (DataRow item in dt.Rows)
|
|
combobox.Items.Add(item[value]);
|
|
}
|
|
combobox.NullText = "";
|
|
//combobox.ButtonClick += new ButtonPressedEventHandler(comboButtonClick);
|
|
if (fieldsqlTag == 23)
|
|
combobox.QueryPopUp += new CancelEventHandler(comboQueryPopup);
|
|
gc.ColumnEdit = combobox;
|
|
}
|
|
|
|
private void comboQueryPopup(object sender, CancelEventArgs e)
|
|
{
|
|
//MessageBox.Show(sender.ToString());
|
|
if (sender is ComboBoxEdit)
|
|
{
|
|
var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle);
|
|
if (focusRow != null)
|
|
{
|
|
ComboBoxEdit edit = (sender as ComboBoxEdit);
|
|
string tmpsql = edit.Properties.Tag.ToString();
|
|
|
|
if (!string.IsNullOrEmpty(tmpsql))
|
|
{
|
|
string listValue = tmpsql.Substring(0, tmpsql.IndexOf("^"));
|
|
string sqlValue = tmpsql.Replace("#", "").Replace("#", "");
|
|
sqlValue = sqlValue.Substring(sqlValue.IndexOf("^") + 1);
|
|
var fieldParams = GetParamValue(sqlValue);
|
|
|
|
//从单据头取值
|
|
if (pnlMain != null)
|
|
{
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
Control[] ctl = pnlMain.Controls.Find("txt_" + fieldName, true);
|
|
if ((ctl != null) && (ctl.Length > 0))
|
|
{
|
|
string fieldValue = GetControlText(ctl[0]);
|
|
sqlValue = sqlValue.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
}
|
|
}
|
|
//从选中行取值
|
|
fieldParams = GetParamValue(sqlValue);
|
|
for (int i = 0; i < fieldParams.Count; i++)
|
|
{
|
|
string fieldName = fieldParams[i].Replace("{", "").Replace("}", "");
|
|
string fieldValue = focusRow[fieldName] + "";
|
|
sqlValue = sqlValue.Replace(fieldParams[i], fieldValue);
|
|
}
|
|
edit.Properties.Items.Clear();
|
|
//MessageBox.Show(listValue + "________" + sqlValue);
|
|
DataTable dtTable = SqlHelper.ExecuteDataSet(sqlValue).Tables[0];
|
|
foreach (DataRow item in dtTable.Rows)
|
|
edit.Properties.Items.Add(item[listValue]);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
private static void LookUpEdit_ProcessNewValue(object sender, DevExpress.XtraEditors.Controls.ProcessNewValueEventArgs e)
|
|
{
|
|
|
|
DataRow Row;
|
|
|
|
RepositoryItemLookUpEdit Edit;
|
|
|
|
Edit = ((LookUpEdit)sender).Properties;
|
|
|
|
if (e.DisplayValue == null || Edit.NullText.Equals(e.DisplayValue) || string.Empty.Equals(e.DisplayValue))
|
|
|
|
return;
|
|
DataTable LookupTable = Edit.DataSource as DataTable;
|
|
Row = LookupTable.NewRow();
|
|
|
|
Row[Edit.DisplayMember] = e.DisplayValue;
|
|
|
|
LookupTable.Rows.Add(Row);
|
|
|
|
e.Handled = true;
|
|
|
|
}
|
|
private static void LookSearchUpEdit_ProcessNewValue(object sender, DevExpress.XtraEditors.Controls.ProcessNewValueEventArgs e)
|
|
{
|
|
|
|
DataRow Row;
|
|
|
|
RepositoryItemSearchLookUpEdit Edit;
|
|
|
|
Edit = ((SearchLookUpEdit)sender).Properties;
|
|
|
|
if (e.DisplayValue == null || Edit.NullText.Equals(e.DisplayValue) || string.Empty.Equals(e.DisplayValue))
|
|
|
|
return;
|
|
DataTable LookupTable = Edit.DataSource as DataTable;
|
|
Row = LookupTable.NewRow();
|
|
|
|
Row[Edit.DisplayMember] = e.DisplayValue;
|
|
|
|
LookupTable.Rows.Add(Row);
|
|
|
|
e.Handled = true;
|
|
|
|
}
|
|
|
|
private static void GetMemoEdit(GridColumn gc, GridControl gg)
|
|
{
|
|
RepositoryItemMemoEdit memo = new RepositoryItemMemoEdit();
|
|
memo.WordWrap = true;
|
|
gg.RepositoryItems.Add(memo);
|
|
gc.ColumnEdit = memo;
|
|
}
|
|
|
|
private static void GetMemoExEdit(GridColumn gc, GridControl gg)
|
|
{
|
|
RepositoryItemMemoExEdit memo = new RepositoryItemMemoExEdit();
|
|
memo.WordWrap = true;
|
|
memo.ShowIcon = false;
|
|
gg.RepositoryItems.Add(memo);
|
|
gc.ColumnEdit = memo;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 刷新下拉返回参数数据源
|
|
/// </summary>
|
|
public void refreshSearchLookUp()
|
|
{
|
|
try
|
|
{
|
|
if (dtColumns == null) return;
|
|
foreach (DataRow row in dtColumns.Rows)
|
|
{
|
|
int fieldsqlTag = 0;
|
|
if (dtColumns.Columns.Contains("fieldsqlTag"))
|
|
{
|
|
fieldsqlTag = Convert.ToInt32(row["fieldsqlTag"]);
|
|
if (fieldsqlTag == 15 || fieldsqlTag == 16)
|
|
{
|
|
GridColumn grid = gridView.Columns.ColumnByFieldName(row["fieldname"] + "");
|
|
string sql = row["fieldsql"] + "";
|
|
sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
sql = Regex.Replace(sql, "#[^##]+#", " 1=1 ");
|
|
RepositoryItemSearchLookUpEdit edit = grid.ColumnEdit as RepositoryItemSearchLookUpEdit;
|
|
edit.DataSource = SqlHelper.ExecuteDataTable(sql);
|
|
grid.ColumnEdit = edit;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
fieldsqlTag = Convert.ToInt32(row["fieldTypeId"]);
|
|
if (fieldsqlTag == 15 || fieldsqlTag == 16)
|
|
{
|
|
GridColumn grid = gridView.Columns.ColumnByFieldName(row["fieldname"] + "");
|
|
string sql = row["lookupSql"] + "";
|
|
sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
sql = Regex.Replace(sql, "#[^##]+#", " 1=1 ");
|
|
RepositoryItemSearchLookUpEdit edit = grid.ColumnEdit as RepositoryItemSearchLookUpEdit;
|
|
edit.DataSource = SqlHelper.ExecuteDataTable(sql);
|
|
grid.ColumnEdit = edit;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 创建多选框
|
|
/// </summary>
|
|
//private void InitMutilEdit(string key, string value, string sql, GridColumn gc)
|
|
//{
|
|
|
|
// FrmMain mutilLookUp = new FrmMain();
|
|
// mutilLookUp.ValueField = key;
|
|
// mutilLookUp.TextField = value;
|
|
// mutilLookUp.sourceSQL = sql;
|
|
|
|
// RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit();
|
|
// btnEdit.NullText = "";
|
|
// btnEdit.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
// btnEdit.AllowNullInput = DefaultBoolean.False;
|
|
// btnEdit.DisplayMember = value;
|
|
// btnEdit.ValueMember = key;
|
|
// btnEdit.SeparatorChar = ',';
|
|
|
|
// btnEdit.DataSource = SqlHelper.ExecuteDataTable(sql);
|
|
// btnEdit.Buttons[0].Visible = false; // 不能移除,移除后事件不起作用.
|
|
// btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) });
|
|
|
|
|
|
// btnEdit.Buttons[1].Tag = mutilLookUp;
|
|
// btnEdit.ButtonClick += new ButtonPressedEventHandler(OnButtonEditClick);
|
|
|
|
// gridControl.RepositoryItems.Add(btnEdit);
|
|
// gc.OptionsColumn.ReadOnly = true;
|
|
// gc.ColumnEdit = btnEdit;
|
|
|
|
//}
|
|
|
|
|
|
//protected void OnButtonEditClick(object sender, ButtonPressedEventArgs e)
|
|
//{
|
|
// CheckedComboBoxEdit btnEdit = (CheckedComboBoxEdit)sender;
|
|
// FrmMain frmMain = e.Button.Tag as FrmMain;
|
|
// frmMain.ReturnValue = btnEdit.EditValue + "";
|
|
// frmMain.ReturnText = btnEdit.Text;
|
|
// frmMain.sourceSQL = ReqSqlWhere(this.gridView.GetFocusedDataRow(), frmMain.sourceSQL);
|
|
// DialogResult result = frmMain.ShowDialog();
|
|
// if (result == DialogResult.OK)
|
|
// {
|
|
// btnEdit.EditValue = frmMain.ReturnValue;
|
|
// }
|
|
//}
|
|
|
|
private void GetLookUpEdit(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag, GridControl gg)
|
|
{
|
|
RepositoryItemLookUpEdit combobox = new RepositoryItemLookUpEdit();
|
|
//combobox.ProcessNewValue += LookUpEdit_ProcessNewValue;
|
|
combobox.SearchMode = SearchMode.AutoFilter;
|
|
combobox.ImmediatePopup = false;
|
|
combobox.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
|
|
string tmpsql = sql;
|
|
tmpsql = ReqSqlParam(tmpsql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
combobox.DataSource = SqlHelper.ExecuteDataSet(tmpsql).Tables[0];
|
|
if (!lookupTables.ContainsKey(colum))
|
|
lookupTables.Add(colum, combobox.DataSource as DataTable);
|
|
combobox.DisplayMember = value;
|
|
combobox.ValueMember = key;
|
|
LookUpColumnInfo ci = new LookUpColumnInfo();
|
|
ci.Caption = "编号";
|
|
ci.FieldName = key;
|
|
ci.Visible = false;
|
|
combobox.Columns.Add(ci);
|
|
|
|
LookUpColumnInfo ci2 = new LookUpColumnInfo();
|
|
ci2.Caption = "名称";
|
|
ci2.FieldName = value;
|
|
ci2.Visible = true;
|
|
combobox.Columns.Add(ci2);
|
|
|
|
gg.RepositoryItems.Add(combobox);
|
|
if (sql.IndexOf("remark", StringComparison.OrdinalIgnoreCase) != -1)
|
|
{
|
|
LookUpColumnInfo ci3 = new LookUpColumnInfo();
|
|
ci3.Caption = "备注";
|
|
ci3.FieldName = "remark";
|
|
ci3.Visible = true;
|
|
combobox.Columns.Add(ci3);
|
|
}
|
|
|
|
combobox.NullText = "";
|
|
combobox.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
|
|
gc.ColumnEdit = combobox;
|
|
}
|
|
|
|
private void GetHyperLink(GridColumn gc)
|
|
{
|
|
//RepositoryItemHyperLinkEdit hypl = new RepositoryItemHyperLinkEdit();
|
|
//gc.ColumnEdit = hypl;
|
|
|
|
}
|
|
|
|
private void GetProgressBar(GridColumn gc)
|
|
{
|
|
RepositoryItemProgressBar progress = new RepositoryItemProgressBar();
|
|
progress.ShowTitle = true;
|
|
gc.ColumnEdit = progress;
|
|
}
|
|
private void GetCheckColumn(GridColumn gc)
|
|
{
|
|
RepositoryItemCheckEdit check = new RepositoryItemCheckEdit();
|
|
check.ValueChecked = 1;
|
|
check.ValueUnchecked = 0;
|
|
gc.ColumnEdit = check;
|
|
}
|
|
|
|
private void GetCheckComboColumn(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag,
|
|
string listKey, string listValue, string unionFields, string unionValue)
|
|
{
|
|
RepositoryItemCheckedComboBoxEdit combobox = new RepositoryItemCheckedComboBoxEdit();
|
|
|
|
sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
combobox.AllowFocused = true;
|
|
//if ((fieldsqlTag == 15 || fieldsqlTag == 16) && sql.Contains("#"))
|
|
//{
|
|
// combobox.Tag = new LookUpTag() { Sql = sql, ValueMember = key, DisplayMember = listValue };
|
|
// combobox.QueryPopUp += new CancelEventHandler(lookUp_QueryPopUp);
|
|
// sql = Regex.Replace(sql, "#[^##]+#", " 1=1 ");
|
|
//}
|
|
DataTable dtTable = SqlHelper.ExecuteDataSet(sql).Tables[0];
|
|
lookupTables.Add(colum, dtTable);
|
|
combobox.DataSource = dtTable;
|
|
combobox.DisplayMember = listValue;
|
|
if (fieldsqlTag == 18)
|
|
{
|
|
combobox.ValueMember = key;
|
|
}
|
|
else
|
|
{
|
|
combobox.ValueMember = listValue;
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(unionFields) && !string.IsNullOrEmpty(unionValue))
|
|
{
|
|
//combobox.Tag = new LookUpTag() { ColumnName = colum, ValueMember = key, DisplayMember = listValue, unionFields = unionFields, unionValue = unionValue };
|
|
LookUpTag lut = combobox.Tag as LookUpTag;
|
|
if (lut == null)
|
|
combobox.Tag = new LookUpTag() { ColumnName = colum, ValueMember = key, DisplayMember = listValue, unionFields = unionFields, unionValue = unionValue };
|
|
else
|
|
{
|
|
lut.ColumnName = colum;
|
|
lut.ValueMember = key;
|
|
lut.DisplayMember = listValue;
|
|
lut.unionFields = unionFields;
|
|
lut.unionValue = unionValue;
|
|
}
|
|
combobox.EditValueChanged += new EventHandler(lookUp_EditValueChanged);
|
|
}
|
|
combobox.NullText = "";
|
|
gridMain.RepositoryItems.Add(combobox);
|
|
gc.ColumnEdit = combobox;
|
|
}
|
|
|
|
private void GetLookUpEdit(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag,
|
|
string listKey, string listValue, string unionFields, string unionValue)
|
|
{
|
|
sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName);
|
|
|
|
RepositoryItemSearchLookUpEdit combobox = new RepositoryItemSearchLookUpEdit();
|
|
//combobox.ShowAddNewButton = true;
|
|
//combobox.Buttons[2].Caption = "新增";
|
|
combobox.AllowFocused = true;
|
|
int allWidth = 0;
|
|
if ((fieldsqlTag == 15 || fieldsqlTag == 16))
|
|
{
|
|
combobox.Tag = new LookUpTag() { Sql = sql, ValueMember = key, DisplayMember = listValue };
|
|
combobox.QueryPopUp += new CancelEventHandler(lookUp_QueryPopUp);
|
|
sql = Regex.Replace(sql, "#[^##]+#", " 1=1 ");
|
|
}
|
|
DataTable dtTable = SqlHelper.ExecuteDataSet(sql).Tables[0];
|
|
dtTable.Prefix = "";
|
|
if (!lookupTables.ContainsKey(colum))
|
|
lookupTables.Add(colum, dtTable);
|
|
combobox.DataSource = dtTable;
|
|
combobox.DisplayMember = listValue;
|
|
combobox.ValueMember = key;
|
|
//if (listValue.ToLower() != key.ToLower())
|
|
//{
|
|
// GridColumn ci = new GridColumn();
|
|
// ci.Caption = "编号";
|
|
// ci.FieldName = listKey;
|
|
// allWidth += ci.Width = CalcMaxColumnWidth(dtTable, listKey);
|
|
// ci.Visible = true;
|
|
// combobox.View.Columns.Add(ci);
|
|
//}
|
|
//GridColumn ci2 = new GridColumn();
|
|
//ci2.Caption = "名称";
|
|
//ci2.FieldName = listValue;
|
|
//ci2.Visible = true;
|
|
//allWidth += ci2.Width = CalcMaxColumnWidth(dtTable, listValue);
|
|
////ci2.Width = -1;
|
|
//combobox.View.Columns.Add(ci2);
|
|
//if (sql.IndexOf("remark", StringComparison.OrdinalIgnoreCase) != -1)
|
|
//{
|
|
// GridColumn ci3 = new GridColumn();
|
|
// ci3.Caption = "备注";
|
|
// ci3.FieldName = "remark";
|
|
// ci3.Visible = true;
|
|
// allWidth += ci3.Width = CalcMaxColumnWidth(dtTable, "remark");
|
|
// combobox.View.Columns.Add(ci3);
|
|
// //combobox.BestFitMode = BestFitMode.BestFit; // 3列的时候自动计算宽度,否则自动填充满表格
|
|
// combobox.View.OptionsView.ColumnAutoWidth = false;
|
|
//}
|
|
//else
|
|
//{
|
|
// combobox.BestFitMode = BestFitMode.BestFitResizePopup;
|
|
//}
|
|
combobox.View.OptionsView.ShowIndicator = false;
|
|
combobox.View.OptionsView.ColumnAutoWidth = true;
|
|
//combobox.View.OptionsView.ShowColumnHeaders = false;
|
|
combobox.View.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center;
|
|
combobox.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
combobox.ShowPopupShadow = true;
|
|
combobox.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
|
|
//combobox.PopupFormSize = new Size(allWidth, 250);
|
|
combobox.ShowFooter = false; // 是否显示底部
|
|
if (!string.IsNullOrEmpty(unionFields) && !string.IsNullOrEmpty(unionValue))
|
|
{
|
|
//combobox.Tag = new LookUpTag() { ColumnName = colum, ValueMember = key, DisplayMember = listValue, unionFields = unionFields, unionValue = unionValue };
|
|
LookUpTag lut = combobox.Tag as LookUpTag;
|
|
if (lut == null)
|
|
combobox.Tag = new LookUpTag() { ColumnName = colum, ValueMember = key, DisplayMember = listValue, unionFields = unionFields, unionValue = unionValue };
|
|
else
|
|
{
|
|
lut.ColumnName = colum;
|
|
lut.ValueMember = key;
|
|
lut.DisplayMember = listValue;
|
|
lut.unionFields = unionFields;
|
|
lut.unionValue = unionValue;
|
|
}
|
|
combobox.EditValueChanged += new EventHandler(lookUp_EditValueChanged);
|
|
//combobox.Validating += new CancelEventHandler(lookUp_EditValidating);
|
|
}
|
|
//if (listValue.ToLower() == key.ToLower())
|
|
//{
|
|
// combobox.View.Columns[1].Visible = false;
|
|
// combobox.View.Columns[0].Width = 1;
|
|
// MessageBox.Show("OK");
|
|
//}
|
|
allWidth = 0;
|
|
foreach (DataColumn col in dtTable.Columns)
|
|
{
|
|
//MessageBox.Show(col.ColumnName);
|
|
GridColumn ci = new GridColumn();
|
|
ci.FieldName = col.ColumnName;
|
|
if (ci.FieldName.ToLower() == "dm" || ci.FieldName.ToLower() == "showid")
|
|
ci.Caption = "编码";
|
|
if (ci.FieldName.ToLower() == "mc" || ci.FieldName.ToLower() == "showname")
|
|
ci.Caption = "名称";
|
|
if (ci.FieldName.ToLower() == "remark")
|
|
ci.Caption = "备注";
|
|
|
|
//ci.Width = -1;
|
|
//MessageBox.Show(ci.FieldName.Substring(0, 1));
|
|
if (ci.FieldName.IndexOf("_parent_", StringComparison.OrdinalIgnoreCase) != -1)
|
|
dtTable.Prefix = ci.FieldName;
|
|
if (ci.FieldName.Substring(0, 1) == "_")
|
|
ci.Visible = false;
|
|
else
|
|
{
|
|
ci.Visible = true;
|
|
allWidth += ci.Width = CalcMaxColumnWidth(dtTable, ci.FieldName) + 25;
|
|
}
|
|
combobox.View.Columns.Add(ci);
|
|
}
|
|
combobox.PopupFormSize = new Size(allWidth + 40, 300);
|
|
//combobox.View.Columns[0].Visible = false;
|
|
combobox.NullText = "";
|
|
gridMain.RepositoryItems.Add(combobox);
|
|
gc.ColumnEdit = combobox;
|
|
combobox.ProcessNewValue += LookSearchUpEdit_ProcessNewValue;
|
|
combobox.ImmediatePopup = true;
|
|
combobox.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
|
|
}
|
|
public void lookUp_EditValidating(object sender, CancelEventArgs e)
|
|
{
|
|
//MessageBox.Show("OK");
|
|
}
|
|
|
|
public void SetColumns(DataTable dt)
|
|
{
|
|
_currentSetColumnType = 4;
|
|
dtColumns = dt;
|
|
isSetColumnWidth = dt.Rows.Count > 0;
|
|
gridView.Columns.Clear();
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
DataRow row = dt.Rows[i];
|
|
GridColumn gridColumn = new GridColumn();
|
|
gridColumn.FieldName = row["fieldname"].ToString();
|
|
gridColumn.Name = row["fieldname"].ToString();
|
|
gridColumn.VisibleIndex = i;
|
|
gridColumn.Caption = row["userName"].ToString();
|
|
gridColumn.Width = Convert.ToInt32(row["width"]);
|
|
gridColumn.Visible = string.IsNullOrEmpty(row["isVisible"] + "") ? true : !Convert.ToBoolean(row["isVisible"]);
|
|
if (Convert.ToInt32(row["width"]) == 0)
|
|
gridColumn.Visible = false;
|
|
string dataFormat = row["DataFormat"] + "";
|
|
gridColumn.OptionsColumn.AllowEdit = false;
|
|
gridColumn.OptionsColumn.ReadOnly = false;
|
|
gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList;
|
|
|
|
CommonUtils.DataFormat(gridColumn, dataFormat, 7);
|
|
int isSum = Convert.ToInt32(row["isSum"]);
|
|
string calcExpr = "";
|
|
if (row.Table.Columns.Contains("calcExpr"))
|
|
calcExpr = row["calcExpr"] + "";
|
|
//处理统计
|
|
if (isSum == 1)
|
|
{
|
|
gridView.OptionsView.ShowFooter = true;
|
|
if (calcExpr.IndexOf("/{") == -1)
|
|
{
|
|
gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), "{0:" + dataFormat + "}") });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, "{0:" + dataFormat + "}") });
|
|
}
|
|
else
|
|
{
|
|
gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), "{0:" + dataFormat + "}") });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), null, "{0:" + dataFormat + "}") });
|
|
}
|
|
}
|
|
gridView1.Columns.Add(gridColumn);
|
|
}
|
|
if (gridView.Columns.Count > 0)
|
|
{
|
|
GridColumn firstColumn = gridView.Columns[0];
|
|
if (firstColumn != null)
|
|
{
|
|
gridView.OptionsView.ShowFooter = true;
|
|
firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), null, "合计: {0:#,###}行") });
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetDataSource(string sql, bool isColumnFix = false)
|
|
{
|
|
if (string.IsNullOrEmpty(sql))
|
|
return;
|
|
|
|
DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0];
|
|
if (isColumnFix)
|
|
{
|
|
gridView.Columns.Clear();
|
|
}
|
|
gridControl.DataSource = null;
|
|
|
|
gridControl.DataSource = dt;
|
|
|
|
if (isColumnFix)
|
|
{
|
|
for (int i = 0; i < gridView.Columns.Count; i++)
|
|
{
|
|
try
|
|
{
|
|
GridColumn col = gridView.Columns[i];
|
|
if (i == 0)
|
|
{
|
|
gridView.OptionsView.ShowFooter = true;
|
|
col.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, col.FieldName.ToString(), "合计: {0:#,###}行") });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, col.FieldName.ToString(), null, "合计: {0:#,###}行") });
|
|
}
|
|
if (col.FieldName.Contains("_"))
|
|
{
|
|
string[] colSplit = col.FieldName.Split('_');
|
|
if (colSplit.Length >= 2)
|
|
{
|
|
col.Caption = colSplit[0];
|
|
col.Width = Convert.ToInt32(colSplit[1]);
|
|
if (Convert.ToInt32(colSplit[1]) == 0)
|
|
col.Visible = false;
|
|
if (colSplit.Length > 2)
|
|
{
|
|
bool visible = "1".Equals(colSplit[2]);
|
|
gridView.OptionsView.ShowFooter = true;
|
|
|
|
if (visible)
|
|
{
|
|
col.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, col.FieldName, "{0:0.############}") });
|
|
gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, col.FieldName, null, "{0:0.############}") });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
col.Width = 150;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 线程调用
|
|
/// </summary>
|
|
/// <param name="sql"></param>
|
|
//public void SetDataSource(object sql)
|
|
//{
|
|
// try
|
|
// {
|
|
// string sqlValue = sql + "";
|
|
// gridControl.DataSource = null;
|
|
// if (string.IsNullOrEmpty(sqlValue))
|
|
// return;
|
|
// DataTable dt = SqlHelper.ExecuteDataSetForThread(sqlValue).Tables[0];
|
|
// gridControl.DataSource = dt;
|
|
|
|
// if (isSetColumnWidth)
|
|
// {
|
|
// foreach (GridColumn col in gridView.Columns)
|
|
// {
|
|
// try
|
|
// {
|
|
// if (col.Caption.Contains("_"))
|
|
// {
|
|
// string[] colSplit = col.Caption.Split('_');
|
|
// if (colSplit.Length == 2)
|
|
// {
|
|
// col.Caption = colSplit[0];
|
|
// col.Width = Convert.ToInt32(colSplit[1]);
|
|
// if (Convert.ToInt32(colSplit[1]) == 0)
|
|
// col.Visible = false;
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// col.Width = 150;
|
|
// }
|
|
// }
|
|
// catch (Exception)
|
|
// {
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// }
|
|
//}
|
|
/// <summary>
|
|
/// 计算最大宽度
|
|
/// </summary>
|
|
private int CalcMaxColumnWidth(DataTable dTable, string columnName)
|
|
{
|
|
int MaxWidth = 0;
|
|
int maxRow = 20;
|
|
for (int i = 0; i < dTable.Rows.Count; i++)
|
|
{
|
|
if (i < maxRow)
|
|
{
|
|
DataRow row = dTable.Rows[i];
|
|
int columnWidth = CommonUtils.GetFontWidth(row[columnName] + "");
|
|
if (columnWidth > MaxWidth)
|
|
{
|
|
MaxWidth = columnWidth;
|
|
}
|
|
}
|
|
}
|
|
|
|
//foreach (DataRow row in dTable.Rows)
|
|
//{
|
|
// int columnWidth = CommonUtils.GetFontWidth(row[columnName] + "");
|
|
// if (columnWidth > MaxWidth)
|
|
// {
|
|
// MaxWidth = columnWidth;
|
|
// }
|
|
//}
|
|
return MaxWidth;
|
|
}
|
|
|
|
private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
e.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
|
|
e.Appearance.Options.UseBackColor = true;
|
|
e.Appearance.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.BackwardDiagonal;
|
|
if (e.Info.IsRowIndicator)
|
|
{
|
|
if (e.RowHandle >= 0)
|
|
{
|
|
e.Info.DisplayText = (e.RowHandle + 1).ToString();
|
|
}
|
|
if (gridView1.FocusedRowHandle == e.RowHandle)
|
|
{
|
|
e.Appearance.BackColor = Color.Blue;
|
|
e.Info.BackAppearance.BackColor = Color.Blue;
|
|
e.Appearance.BackColor2 = Color.Blue;
|
|
e.Info.BackAppearance.BackColor2 = Color.Blue;
|
|
e.Appearance.ForeColor = Color.Blue;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
|
|
public void SetFocus(string searchText, string colname)
|
|
{
|
|
DevExpress.XtraGrid.Views.Base.ColumnView view = (DevExpress.XtraGrid.Views.Base.ColumnView)this.gridControl.FocusedView;
|
|
DevExpress.XtraGrid.Columns.GridColumn column = view.Columns[colname];
|
|
if (column != null)
|
|
{
|
|
int rhFound = view.LocateByDisplayText(view.FocusedRowHandle + 1, column, searchText);
|
|
if (rhFound != DevExpress.XtraGrid.GridControl.InvalidRowHandle)
|
|
{
|
|
view.FocusedRowHandle = rhFound;
|
|
view.FocusedColumn = column;
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 行改变事件
|
|
/// </summary>
|
|
public object RowColorCondtion { get; set; }
|
|
|
|
public void gridView1_SelectionChange(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
isCancel = false;
|
|
GridCell[] cells = gridView1.GetSelectedCells();
|
|
pnlBottom.Visible = (cells.Length > 1);
|
|
pnlSpec.Visible = (cells.Length > 1);
|
|
label1.Text = "求和:" + cells.Length.ToString();
|
|
double lSum = 0.00;
|
|
double lAvg = 0.00;
|
|
int lCount = cells.Length;
|
|
foreach (GridCell item in cells)
|
|
{
|
|
double lNumber = 0.00;
|
|
string cellValue = "0";
|
|
if (item.Column != null)
|
|
cellValue = gridView1.GetRowCellValue(item.RowHandle, item.Column) + "";
|
|
if (double.TryParse(cellValue, out lNumber))
|
|
lSum += lNumber;
|
|
}
|
|
lAvg = lSum / lCount;
|
|
|
|
label1.Text = "求和:" + lSum.ToString() + " 计数:" + lCount.ToString() + " 平均值:" + lAvg.ToString();
|
|
}
|
|
|
|
public void gridView1_CancelEditor(object sender, CancelEventArgs e)
|
|
{
|
|
e.Cancel = isCancel;
|
|
}
|
|
|
|
#region 表格列扩展
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
public void gridView1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
|
|
{
|
|
if (e.HitInfo.Column == null) return;
|
|
//判断是否是列标题的右键菜单
|
|
if (e.MenuType == GridMenuType.Column)
|
|
{
|
|
string gridMerge = "开启数据合并";
|
|
if (gridView1.OptionsView.AllowCellMerge)
|
|
gridMerge = "关闭数据合并";
|
|
string mergeCaption = "数据合并";
|
|
if (e.HitInfo.Column != null && e.HitInfo.Column.OptionsColumn.AllowMerge == DefaultBoolean.True)
|
|
mergeCaption = "取消合并";
|
|
GridViewColumnMenu menu = e.Menu as GridViewColumnMenu;
|
|
|
|
DXMenuItem itemFixLeft = new DXMenuItem("冻结列(左)", OnFixLeftItemClick);
|
|
DXMenuItem itemFixLeftAll = new DXMenuItem("冻结列(左全部)", OnFixLeftAllItemClick);
|
|
DXMenuItem itemFixRight = new DXMenuItem("冻结列(右)", OnFixRightItemClick);
|
|
DXMenuItem itemFixRightAll = new DXMenuItem("冻结列(右全部)", OnFixRightAllItemClick);
|
|
DXMenuItem itemUnFix = new DXMenuItem("清除冻结", OnUnFixItemClick);
|
|
DXMenuItem gridMergeItem = new DXMenuItem(gridMerge, OnGridMergeItemClick);
|
|
DXMenuItem itemMerge = new DXMenuItem(mergeCaption, OnMergeItemClick);
|
|
|
|
DXMenuItem itemSaveColumn = new DXMenuItem("保存表格属性", OnSaveItemClick);
|
|
itemSaveColumn.Tag = gridView1;
|
|
|
|
DXMenuItem itemClearColumn = new DXMenuItem("恢复表格属性", OnClearItemClick);
|
|
itemClearColumn.Tag = this;
|
|
|
|
DXMenuItem itemExportColumn = new DXMenuItem("导出表格数据", OnExportItemClick);
|
|
itemExportColumn.Tag = gridView1;
|
|
|
|
DXMenuItem itemPrintColumn = new DXMenuItem("打印表格数据", OnPrintItemClick);
|
|
itemPrintColumn.Tag = gridView1;
|
|
|
|
DXMenuItem itemSortColumn = new DXMenuItem("清除全部列排序", OnClearSortItemClick);
|
|
itemSortColumn.Tag = gridView1;
|
|
|
|
itemFixLeft.Tag = itemFixRight.Tag = itemUnFix.Tag = e.HitInfo.Column;
|
|
itemFixLeftAll.Tag = itemFixRightAll.Tag = e.HitInfo.Column;
|
|
itemFixLeft.Image = Lskj.MyControl.Properties.Resources.fix_left;
|
|
itemFixLeftAll.Image = Lskj.MyControl.Properties.Resources.fix_left;
|
|
itemFixRight.Image = Lskj.MyControl.Properties.Resources.fix_right;
|
|
itemFixRightAll.Image = Lskj.MyControl.Properties.Resources.fix_right;
|
|
itemUnFix.Image = Lskj.MyControl.Properties.Resources.fix_exit;
|
|
gridMergeItem.Tag = gridView1;
|
|
itemMerge.Tag = e.HitInfo.Column;
|
|
|
|
if (e.HitInfo.Column.Fixed == FixedStyle.Left)
|
|
itemFixLeft.Enabled = false;
|
|
if (e.HitInfo.Column.Fixed == FixedStyle.Right)
|
|
itemFixRight.Enabled = false;
|
|
if (e.HitInfo.Column.Fixed == FixedStyle.None)
|
|
itemUnFix.Enabled = false;
|
|
itemMerge.Enabled = gridView1.OptionsView.AllowCellMerge;
|
|
|
|
itemFixLeft.BeginGroup = true;
|
|
|
|
menu.Items.Add(itemFixLeft);
|
|
menu.Items.Add(itemFixLeftAll);
|
|
//menu.Items.Add(itemFixRight);
|
|
//menu.Items.Add(itemFixRightAll);
|
|
menu.Items.Add(itemUnFix);
|
|
gridMergeItem.BeginGroup = true;
|
|
menu.Items.Add(gridMergeItem);
|
|
menu.Items.Add(itemMerge);
|
|
menu.Items.Add(itemExportColumn);
|
|
menu.Items.Add(itemPrintColumn);
|
|
gridMergeItem.BeginGroup = true;
|
|
menu.Items.Add(itemSortColumn);
|
|
|
|
if ((!string.IsNullOrEmpty(FormKey)) && IsSaveColumn)
|
|
{
|
|
gridMergeItem.BeginGroup = true;
|
|
menu.Items.Add(itemSaveColumn);
|
|
|
|
menu.Items.Add(itemClearColumn);
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 清除所有列排序
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnClearSortItemClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
foreach (GridColumn col in gridView1.Columns)
|
|
{
|
|
col.SortOrder = ColumnSortOrder.None;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
XtraMessageBox.Show("清除失败.");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 冻结列左侧
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnFixLeftItemClick(object sender, EventArgs e)
|
|
{
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
GridColumn column = item.Tag as GridColumn;
|
|
column.Fixed = FixedStyle.Left;
|
|
}
|
|
/// <summary>
|
|
/// 冻结列右侧
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnFixRightItemClick(object sender, EventArgs e)
|
|
{
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
GridColumn column = item.Tag as GridColumn;
|
|
column.Fixed = FixedStyle.Right;
|
|
}
|
|
/// <summary>
|
|
/// 取消冻结列
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnUnFixItemClick(object sender, EventArgs e)
|
|
{
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
GridColumn column = item.Tag as GridColumn;
|
|
column.Fixed = FixedStyle.None;
|
|
column.VisibleIndex = column.AbsoluteIndex;
|
|
}
|
|
/// <summary>
|
|
/// 冻结列左侧全部
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnFixLeftAllItemClick(object sender, EventArgs e)
|
|
{
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
GridColumn column = item.Tag as GridColumn;
|
|
|
|
FixAllColumns(FixedStyle.Left, column);
|
|
}
|
|
/// <summary>
|
|
/// 冻结列右侧全部
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnFixRightAllItemClick(object sender, EventArgs e)
|
|
{
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
GridColumn column = item.Tag as GridColumn;
|
|
FixAllColumns(FixedStyle.Right, column);
|
|
}
|
|
private void FixAllColumns(FixedStyle fixedStyle, GridColumn curCol)
|
|
{
|
|
switch (fixedStyle)
|
|
{
|
|
case FixedStyle.Left:
|
|
{
|
|
foreach (GridColumn item in gridView.Columns)
|
|
{
|
|
if (item.AbsoluteIndex <= curCol.AbsoluteIndex)
|
|
{
|
|
item.Fixed = FixedStyle.Left;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case FixedStyle.Right:
|
|
{
|
|
foreach (GridColumn item in gridView.Columns)
|
|
{
|
|
if (item.AbsoluteIndex >= curCol.AbsoluteIndex)
|
|
{
|
|
item.Fixed = FixedStyle.Right;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 合并
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnMergeItemClick(object sender, EventArgs e)
|
|
{
|
|
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
GridColumn column = item.Tag as GridColumn;
|
|
//column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.True;
|
|
if (column.OptionsColumn.AllowMerge == DefaultBoolean.True)
|
|
column.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
|
|
else
|
|
column.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
|
|
}
|
|
/// <summary>
|
|
/// 合并
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnGridMergeItemClick(object sender, EventArgs e)
|
|
{
|
|
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
GridView grv = item.Tag as GridView;
|
|
//column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.True;
|
|
if (grv.OptionsView.AllowCellMerge == true)
|
|
grv.OptionsView.AllowCellMerge = false;
|
|
else
|
|
{
|
|
grv.OptionsView.AllowCellMerge = true;
|
|
MessageBox.Show("请注意:数据合并模式已开启,该模式下将不能进行区域选择、复制和粘贴\r\n要退出合并模式请再次点击进行切换");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存表格列信息
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnSaveItemClick(object sender, EventArgs e)
|
|
{
|
|
if (string.IsNullOrEmpty(FormKey))
|
|
return;
|
|
|
|
if (XtraMessageBox.Show("是否将表格列头信息保存至数据库", "询问", MessageBoxButtons.YesNo) != DialogResult.Yes)
|
|
return;
|
|
|
|
DataTable dtTable = new DataTable();
|
|
try
|
|
{
|
|
dtTable = SqlHelper.ExecuteDataSet(string.Format("select 1 from P_systemGridConfigTab where formkey='{0}' and operatorId='{1}'", FormKey, OperatorId)).Tables[0];
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
XtraMessageBox.Show("检测到未开启列保存列功能,请联系朗速");
|
|
return;
|
|
}
|
|
|
|
// 检查当前操作人员是否已经保存过列信息
|
|
StringBuilder sb = new StringBuilder();
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
GridView grv = item.Tag as GridView;
|
|
|
|
if (OperatorName != "管理员")
|
|
{
|
|
if (dtTable.Rows.Count > 0)
|
|
{
|
|
foreach (GridColumn col in grv.Columns)
|
|
{
|
|
string tempSql = string.Format(@"update P_systemGridConfigTab set orderid='{0}',fieldWidth='{1}',isvisible={2} where formkey='{3}' and fieldname='{4}' and operatorid='{5}';",
|
|
col.VisibleIndex, col.Width, Convert.ToInt32(col.Visible), FormKey, col.FieldName, OperatorId);
|
|
sb.Append(tempSql);
|
|
}
|
|
if (!string.IsNullOrEmpty(sb.ToString()))
|
|
{
|
|
SqlHelper.ExecuteNonQuery(sb.ToString());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (GridColumn col in grv.Columns)
|
|
{
|
|
string tempSql = string.Format(@"insert into P_systemGridConfigTab(formkey,fieldname,username,orderid,isvisible,operatorid,operatorName,operatedate,fieldWidth)
|
|
values('{0}','{1}','{2}','{3}','{4}','{5}','{6}',getdate(),'{7}');", FormKey, col.FieldName, col.Caption, col.VisibleIndex, Convert.ToInt32(col.Visible), OperatorId, OperatorName, col.Width);
|
|
sb.Append(tempSql);
|
|
}
|
|
if (!string.IsNullOrEmpty(sb.ToString()))
|
|
{
|
|
SqlHelper.ExecuteNonQuery(sb.ToString());
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#region old
|
|
if (OperatorName == "管理员")
|
|
{
|
|
string tmpsql = string.Empty;
|
|
string colTable = string.Empty;
|
|
string keyField = string.Empty;
|
|
string stepCode = string.Empty;
|
|
int keyOrder = 0;
|
|
//DXMenuItem item = sender as DXMenuItem;
|
|
//GridView grv = item.Tag as GridView;
|
|
//基础档案主表
|
|
if (ModuleType == 1)
|
|
{
|
|
colTable = "p_systemwordbooktab";
|
|
keyField = "tab";
|
|
tmpsql = "select top 1 orderid from p_systemwordbooktab where tab='" + ModuleKey + "' order by orderid";
|
|
object obj = SqlHelper.ExecuteScalar(CommandType.Text, tmpsql);
|
|
if (obj != null)
|
|
keyOrder = Convert.ToInt32(obj);
|
|
}
|
|
//报表明细
|
|
if (ModuleType == 2)
|
|
{
|
|
colTable = "p_systemDlltabDetailGrid";
|
|
keyField = "detailkey";
|
|
}
|
|
//单据明细
|
|
if (ModuleType == 3)
|
|
{
|
|
colTable = "p_systembillDetail";
|
|
keyField = "typecode";
|
|
}
|
|
//单据来源主信息
|
|
if (ModuleType == 4)
|
|
{
|
|
colTable = "p_systembillsourcegrid";
|
|
keyField = "sourceid";
|
|
}
|
|
//单据来源明细信息
|
|
if (ModuleType == 5)
|
|
{
|
|
colTable = "p_systembillsourcedetail";
|
|
keyField = "sourceid";
|
|
}
|
|
//单据审核列表
|
|
if (ModuleType == 6)
|
|
{
|
|
colTable = "p_systembillstepgrid";
|
|
keyField = "typeCode";
|
|
if (!string.IsNullOrEmpty(ModuleKey) && ModuleKey.Split('_').Length == 2)
|
|
{
|
|
string[] splitStr = ModuleKey.Split('_');
|
|
ModuleKey = splitStr[0];
|
|
stepCode = splitStr[1];
|
|
}
|
|
}
|
|
//基础档案审核列表
|
|
if (ModuleType == 7)
|
|
{
|
|
colTable = "p_systemdlltabflowstepgrid";
|
|
keyField = "typeCode";
|
|
if (!string.IsNullOrEmpty(ModuleKey) && ModuleKey.Split('_').Length == 2)
|
|
{
|
|
string[] splitStr = ModuleKey.Split('_');
|
|
ModuleKey = splitStr[0];
|
|
stepCode = splitStr[1];
|
|
}
|
|
}
|
|
// 单据审核附加信息
|
|
if (ModuleType == 8)
|
|
{
|
|
colTable = "p_systembillauditAttachDetail";
|
|
keyField = "attachKey";
|
|
}
|
|
tmpsql = "";
|
|
foreach (GridColumn col in grv.Columns)
|
|
{
|
|
tmpsql = tmpsql + "update " + colTable + " set width=" + col.Width.ToString() + ((ModuleType == 1) && (col.VisibleIndex == -1) ? " ,vislble=1" : "") + (col.VisibleIndex != -1 ? ",orderid=" + (col.VisibleIndex + keyOrder + (ModuleType == 1 ? 1 : 0)).ToString() : "") +
|
|
" where " + keyField + "='" + ModuleKey + "' and fieldname='" + col.FieldName + "'";
|
|
if (ModuleType == 1)
|
|
tmpsql = tmpsql + " and orderid<>" + keyOrder.ToString();
|
|
if (ModuleType == 7)
|
|
tmpsql = tmpsql + " and stepCode=" + stepCode;
|
|
tmpsql = tmpsql + ";";
|
|
}
|
|
//MessageBox.Show(tmpsql);
|
|
SqlHelper.ExecuteNonQuery(tmpsql);
|
|
}
|
|
#endregion
|
|
|
|
XtraMessageBox.Show("保存列信息成功");
|
|
}
|
|
|
|
private void OnClearItemClick(object sender, EventArgs e)
|
|
{
|
|
if (string.IsNullOrEmpty(FormKey))
|
|
return;
|
|
|
|
if (XtraMessageBox.Show("是否将表格列头信息恢复到系统配置状态", "询问", MessageBoxButtons.YesNo) != DialogResult.Yes)
|
|
return;
|
|
|
|
DataTable dtTable = new DataTable();
|
|
try
|
|
{
|
|
dtTable = SqlHelper.ExecuteDataSet(string.Format("select 1 from P_systemGridConfigTab where formkey='{0}' and operatorId='{1}'", FormKey, OperatorId)).Tables[0];
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
XtraMessageBox.Show("检测到未开启列保存列功能,请联系朗速");
|
|
return;
|
|
}
|
|
|
|
string sql = string.Format("delete from P_systemGridConfigTab where formkey='{0}' and operatorId='{1}'", FormKey, OperatorId);
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
|
|
lookupDatas.Clear();
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
BandedControlEx grd = item.Tag as BandedControlEx;
|
|
if (grd == null)
|
|
{
|
|
GridControlEx grd1 = item.Tag as GridControlEx;
|
|
switch (_currentSetColumnType)
|
|
{
|
|
case 1:
|
|
grd1.SetColumns(ColumnSQL);
|
|
break;
|
|
case 3:
|
|
grd1.SetColumns3(ColumnSQL);
|
|
break;
|
|
case 4:
|
|
grd1.SetColumns(dtColumns);
|
|
break;
|
|
case 2:
|
|
default:
|
|
grd1.SetColumns2(dtColumns);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (_currentSetColumnType)
|
|
{
|
|
case 4:
|
|
grd.SetColumns(dtColumns);
|
|
break;
|
|
case 3:
|
|
grd.SetColumns3(ColumnSQL);
|
|
break;
|
|
case 2:
|
|
default:
|
|
grd.SetColumns2(dtColumns);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ((OperatorName == "管理员") && (ModuleType == 1))
|
|
{
|
|
sql = "update p_systemwordbooktab set vislble=vislble4,orderid=oid4 where tab='" + ModuleKey + "' and exists(select 1 from p_systemtab where clientname='钱多多')";
|
|
|
|
SqlHelper.ExecuteNonQuery(sql);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 重置表格列
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public DataTable ResetColumns(DataTable columns)
|
|
{
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(FormKey))
|
|
return columns;
|
|
|
|
DataTable dtColumns = SqlHelper.ExecuteDataSet(string.Format("select *,isnull(isvisible,0) as visible1,case when isnull(isvisible,0)=0 then 0 else fieldwidth end as width from P_systemGridConfigTab where formkey='{0}' and operatorid='{1}'", FormKey, OperatorId)).Tables[0];
|
|
foreach (DataRow row in dtColumns.Rows)
|
|
{
|
|
string fieldname = row["fieldname"] + "";
|
|
string orderid = row["orderid"] + "";
|
|
string fieldWidth = row["Width"] + "";
|
|
string fieldVisible = (Convert.ToInt32(row["visible1"]) == 1 ? 0 : 1).ToString();
|
|
|
|
foreach (DataRow item in columns.Rows)
|
|
{
|
|
if (fieldname.ToLower() == (item["fieldname"] + "").ToLower())
|
|
{
|
|
item["orderid"] = orderid;
|
|
item["width"] = fieldWidth;
|
|
}
|
|
}
|
|
}
|
|
|
|
DataView dv = columns.DefaultView;
|
|
dv.Sort = "orderid asc";
|
|
|
|
return dv.ToTable();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
return columns;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导出表格数据
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnExportItemClick(object sender, EventArgs e)
|
|
{
|
|
SaveXls(gridControl);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印表格数据
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnPrintItemClick(object sender, EventArgs e)
|
|
{
|
|
Preview(gridControl);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 导出Excel
|
|
/// <summary>
|
|
/// 导出Excel
|
|
/// </summary>
|
|
/// <param name="GridControlPub"></param>
|
|
/// <returns></returns>
|
|
public static int SaveXls(DevExpress.XtraGrid.GridControl GridControlPub)
|
|
{
|
|
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
|
saveFileDialog.Title = "导出Excel";
|
|
saveFileDialog.Filter = "Excel文件(*.xls)|*.xls|Excel2007|*.xlsx|PDF文件|*.PDF|RTF文件|*.RTF|HTML文件|*.html";
|
|
DialogResult dialogResult = saveFileDialog.ShowDialog();
|
|
|
|
GridControl newGrid = CommonUtils.ReplaceBitType(GridControlPub);
|
|
|
|
if (dialogResult == DialogResult.OK)
|
|
{
|
|
DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions();
|
|
options.TextExportMode = TextExportMode.Text;
|
|
|
|
DevExpress.XtraPrinting.XlsxExportOptions optionsx = new DevExpress.XtraPrinting.XlsxExportOptions();
|
|
optionsx.TextExportMode = TextExportMode.Text;
|
|
|
|
if (saveFileDialog.FilterIndex == 1)
|
|
{
|
|
newGrid.ExportToXls(saveFileDialog.FileName, options);
|
|
}
|
|
if (saveFileDialog.FilterIndex == 2)
|
|
{
|
|
newGrid.ExportToXlsx(saveFileDialog.FileName, optionsx);
|
|
}
|
|
if (saveFileDialog.FilterIndex == 3)
|
|
{
|
|
newGrid.ExportToPdf(saveFileDialog.FileName);
|
|
}
|
|
if (saveFileDialog.FilterIndex == 4)
|
|
{
|
|
newGrid.ExportToRtf(saveFileDialog.FileName);
|
|
}
|
|
if (saveFileDialog.FilterIndex == 5)
|
|
{
|
|
newGrid.ExportToHtml(saveFileDialog.FileName);
|
|
}
|
|
XtraMessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
return 1;
|
|
}
|
|
#endregion
|
|
|
|
#region 打印GridControl
|
|
/// <summary>
|
|
/// 打印GridControl
|
|
/// </summary>
|
|
/// <param name="GridControlPub"></param>
|
|
/// <returns></returns>
|
|
public static int Preview(DevExpress.XtraGrid.GridControl GridControlPub)
|
|
{
|
|
PrintingSystem ps = null;
|
|
DevExpress.XtraPrinting.PrintableComponentLink link = null;
|
|
ps = new DevExpress.XtraPrinting.PrintingSystem();
|
|
link = new DevExpress.XtraPrinting.PrintableComponentLink(ps);
|
|
ps.Links.Add(link);
|
|
link.Component = GridControlPub;//这里可以是可打印的部件
|
|
string _PrintHeader = "打印数据信息";
|
|
PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter;
|
|
phf.Header.Content.Clear();
|
|
phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" });
|
|
phf.Header.Font = new System.Drawing.Font("宋体", 14, System.Drawing.FontStyle.Bold);
|
|
phf.Header.LineAlignment = BrickAlignment.Center;
|
|
link.CreateDocument(); //建立文档
|
|
ps.PreviewFormEx.Show();
|
|
return 1;
|
|
}
|
|
#endregion
|
|
|
|
private void gridView1_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e)
|
|
{
|
|
if (e.RowHandle == gridView1.FocusedRowHandle)
|
|
e.Appearance.BackColor = ColorTranslator.FromHtml("#9feb6a"); //Color.SpringGreen;
|
|
}
|
|
|
|
private void gridMain_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the adapter object.
|
|
/// </summary>
|
|
/// <value>The adapter object.</value>
|
|
public SqlDataAdapter AdapterObj { get; set; }
|
|
|
|
/// <summary>
|
|
/// <para>说明:获取选中行数据</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2019-10-18 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <returns>DataRow[].</returns>
|
|
public virtual DataRow[] GetViewFocusedDataRows()
|
|
{
|
|
int[] rows = gridView.GetSelectedRows();
|
|
DataRow[] dataRows = new DataRow[rows.Length];
|
|
for (int i = 0; i < rows.Length; i++)
|
|
{
|
|
dataRows[i] = gridView.GetDataRow(rows[i]);
|
|
}
|
|
return dataRows;
|
|
}
|
|
|
|
public void ReleaseEvent()
|
|
{
|
|
gridView1.RowStyle -= new RowStyleEventHandler(gridView1_RowStyle);
|
|
}
|
|
|
|
}
|
|
}
|