ab56a9bcf7
SVN-Revision: r240
2728 lines
122 KiB
C#
2728 lines
122 KiB
C#
/******************************
|
|
* 说明:表格树
|
|
* 创建人:龚宇超
|
|
* 创建日期:2017-12-26
|
|
* 修改人:
|
|
* 修改日期:
|
|
* 修改备注:
|
|
* 版本:1.0.0.0
|
|
******************************/
|
|
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 Lskj.Control.Model;
|
|
using Lskj.Model;
|
|
using DevExpress.XtraTreeList;
|
|
using DevExpress.XtraTreeList.Columns;
|
|
using DevExpress.Utils;
|
|
using DevExpress.XtraGrid;
|
|
using DevExpress.XtraTreeList.Menu;
|
|
using DevExpress.Utils.Menu;
|
|
using Lskj.Data;
|
|
using Lskj.Business.Impl;
|
|
using System.Data.SqlClient;
|
|
using Lskj.Util;
|
|
using Lskj.Business;
|
|
using DevExpress.XtraTreeList.Nodes;
|
|
using DevExpress.XtraEditors.Repository;
|
|
using DevExpress.XtraEditors.Controls;
|
|
using DevExpress.XtraEditors;
|
|
using System.Reflection;
|
|
using DevExpress.Data.Filtering;
|
|
using DevExpress.XtraGrid.Drawing;
|
|
using Lskj.Control.MultiGridLookUp;
|
|
using Lskj.Control.MultiModelLookUp;
|
|
using System.Text.RegularExpressions;
|
|
using DevExpress.XtraGrid.Views.BandedGrid;
|
|
using System.Collections;
|
|
|
|
namespace Lskj.Control
|
|
{
|
|
/// <summary>
|
|
/// 表格树
|
|
/// </summary>
|
|
public partial class TreeBandedGridControlEx : TreeGridControlEx
|
|
{
|
|
public TreeList TreeListObj { get { return gcMain; } }
|
|
|
|
/// <summary>
|
|
/// 树表格固定菜单
|
|
/// </summary>
|
|
public ContextMenuStrip MenuStrip { get { return contextMenuStrip; } }
|
|
/// <summary>
|
|
/// 默认全部展开
|
|
/// </summary>
|
|
public string Expansion = "1";
|
|
|
|
//treeList树展开的节点块
|
|
public List<TreeListNode> treeListNodes = new List<TreeListNode>();
|
|
|
|
/// <summary>
|
|
/// 按初始顺序保存全部gridBand
|
|
/// </summary>
|
|
public List<TreeListBand> saveGridBands = new List<TreeListBand>();
|
|
/// <summary>
|
|
/// 按初始顺序保存全部gridBand对应的二级列名
|
|
/// </summary>
|
|
public Dictionary<TreeListBand, string> saveGridBandColumn = new Dictionary<TreeListBand, string>();
|
|
|
|
|
|
public TreeBandedGridControlEx()
|
|
{
|
|
InitializeComponent();
|
|
this.gcMain.KeyDown += new KeyEventHandler(OnTreeGridViewKeyDown);
|
|
this.gcMain.SelectionChanged += new EventHandler(gcMain_SelectionChanged);
|
|
this.gcMain.CustomDrawNodeCell += new CustomDrawNodeCellEventHandler(OnCustomDrawNodeCell);
|
|
this.SetGridRowHeightAndFont();
|
|
//InitializeTreeMethod();
|
|
|
|
//this.gcMain.OptionsBehavior.EnableFiltering = true;
|
|
//this.gcMain.OptionsFind.AlwaysVisible = true;
|
|
}
|
|
void gcMain_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
//try
|
|
//{
|
|
//List<TreeListCell> cells = this.gcMain.GetSelectedCells();
|
|
//DataRow[] rows = GetViewFocusedDataRows();
|
|
|
|
//this.pl_buttom.Visible = cells.Count > 1 && rows.Length > 1;
|
|
//if (this.pl_buttom.Visible)
|
|
//{
|
|
|
|
// // 分别计算求和、平均值、最大值、最小值、计数
|
|
// double sum = 0, avg = 0, max = 0, min = 0;
|
|
// int count = 0;
|
|
|
|
// foreach (DataRow row in rows)
|
|
// {
|
|
// foreach (TreeListCell cell in cells)
|
|
// {
|
|
// double cellNumber = 0;
|
|
// string cellValue = row[cell.Column.Name] + "";
|
|
// if (double.TryParse(cellValue, out cellNumber))
|
|
// {
|
|
// cellNumber = Convert.ToDouble(cellValue);
|
|
|
|
// if (max < cellNumber)
|
|
// max = cellNumber;
|
|
// if (min == 0 || min > cellNumber)
|
|
// min = cellNumber;
|
|
|
|
// count++;
|
|
// sum += cellNumber;
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// avg = count == 0 || count == 0 ? 0 : sum / count;
|
|
// lblTotal.Text = string.Format(ResourceKeys.GridTotalDisplayText, count, Math.Round(sum, 2), Math.Round(avg, 2), Math.Round(max, 2), Math.Round(min, 2));
|
|
//}
|
|
//}
|
|
//catch (Exception)
|
|
//{
|
|
//}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置表格颜色</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-12-12 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="table">The table.</param>
|
|
public override void SetGridRowColors(DataTable table)
|
|
{
|
|
this.GridRowColorsTable = table;
|
|
if (table != null && table.Rows.Count > 0)
|
|
{
|
|
DataRow rowItem = table.Select("1=1").FirstOrDefault(x => (x["condition"] + "").Contains("COLUMN_"));
|
|
if (rowItem != null)
|
|
this.gcMain.CustomDrawNodeCell += new CustomDrawNodeCellEventHandler(OnGridViewRowCellStyle);
|
|
else
|
|
this.gcMain.NodeCellStyle += new GetCustomNodeCellStyleEventHandler(OnGridViewRowStyle);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置树表格行颜色</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2019-11-15 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="RowStyleEventArgs"/> instance containing the event data.</param>
|
|
protected void OnGridViewRowStyle(object sender, GetCustomNodeCellStyleEventArgs e)
|
|
{
|
|
if (this.GridRowColorsTable != null && this.GridRowColorsTable.Rows.Count > 0)
|
|
{
|
|
// 渲染界面数据量过多界面刷新会很慢
|
|
DataRowView dataRowView = this.gcMain.GetDataRecordByNode(e.Node) as DataRowView;
|
|
DataRow gridRow = dataRowView != null ? dataRowView.Row : null;
|
|
foreach (DataRow item in this.GridRowColorsTable.Rows)
|
|
{
|
|
string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "");
|
|
try
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(cond) && ReplaceHelper.EvalCond(cond))
|
|
{
|
|
GridRowColorModel model = new GridRowColorModel(item);
|
|
if (!string.IsNullOrWhiteSpace(model.BackColor))
|
|
{
|
|
e.Appearance.BackColor = ColorTranslator.FromHtml(model.BackColor);
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(model.ForceColor))
|
|
{
|
|
e.Appearance.ForeColor = ColorTranslator.FromHtml(model.ForceColor);
|
|
}
|
|
|
|
FontStyle fontStyle = new FontStyle();
|
|
if (model.IsBold) fontStyle = fontStyle | FontStyle.Bold;
|
|
if (model.IsItalic) fontStyle = fontStyle | FontStyle.Italic;
|
|
if (model.IsStrickOut) fontStyle = fontStyle | FontStyle.Strikeout;
|
|
if (model.IsUnderLine) fontStyle = fontStyle | FontStyle.Underline;
|
|
|
|
e.Appearance.Font = new Font(e.Appearance.Font, fontStyle);
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//LogHelper.Instance.WriteLog("GridView RowCellStyle Error. Condition:" + model.Condition + ";EvalCondtion:" + cond);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置树表格单元格颜色</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2019-11-15 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The source of the event.</param>
|
|
/// <param name="e">The <see cref="DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs"/> instance containing the event data.</param>
|
|
/// <exception cref="System.NotImplementedException"></exception>
|
|
protected void OnGridViewRowCellStyle(object sender, CustomDrawNodeCellEventArgs e)
|
|
{
|
|
if (this.GridRowColorsTable != null && this.GridRowColorsTable.Rows.Count > 0 && !string.IsNullOrEmpty(e.CellValue + ""))
|
|
{
|
|
// 渲染界面数据量过多界面刷新会很慢
|
|
DataRowView dataRowView = this.gcMain.GetDataRecordByNode(e.Node) as DataRowView;
|
|
DataRow gridRow = dataRowView != null ? dataRowView.Row : null;
|
|
foreach (DataRow item in this.GridRowColorsTable.Rows)
|
|
{
|
|
string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + "");
|
|
try
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(cond) && ReplaceHelper.EvalCond(cond))
|
|
{
|
|
GridRowColorModel model = new GridRowColorModel(item);
|
|
if (!string.IsNullOrWhiteSpace(model.BackColor))
|
|
{
|
|
e.Appearance.BackColor = ColorTranslator.FromHtml(model.BackColor);
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(model.ForceColor))
|
|
{
|
|
e.Appearance.ForeColor = ColorTranslator.FromHtml(model.ForceColor);
|
|
}
|
|
|
|
FontStyle fontStyle = new FontStyle();
|
|
if (model.IsBold) fontStyle = fontStyle | FontStyle.Bold;
|
|
if (model.IsItalic) fontStyle = fontStyle | FontStyle.Italic;
|
|
if (model.IsStrickOut) fontStyle = fontStyle | FontStyle.Strikeout;
|
|
if (model.IsUnderLine) fontStyle = fontStyle | FontStyle.Underline;
|
|
|
|
e.Appearance.Font = new Font(e.Appearance.Font, fontStyle);
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//LogHelper.Instance.WriteLog("GridView RowCellStyle Error. Condition:" + model.Condition + ";EvalCondtion:" + cond);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置只读列</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-03-30 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="table">The table.</param>
|
|
/// <param name="customColumKey">The custom colum key.</param>
|
|
public override void SetReadOnlyColumns(DataTable table, string customColumKey = "")
|
|
{
|
|
if (table == null) return;
|
|
this.CustomColumKey = customColumKey;
|
|
this.gcMain.PopupMenuShowing += new PopupMenuShowingEventHandler(OnPopupMenuShowing);
|
|
|
|
//设置列头自动高度
|
|
this.gcMain.OptionsView.ColumnHeaderAutoHeight = DefaultBoolean.True;
|
|
base.ColumnList.Clear();
|
|
this.gcMain.Bands.Clear();
|
|
this.gcMain.Columns.Clear();
|
|
this.AddBandColumns(table);
|
|
|
|
|
|
|
|
DataTable customTable = this.gcMain.GetCustomColumnByDatabase(this.CustomColumKey);
|
|
this.SetCustomColumns(customTable);
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:添加多表头列</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-04-11 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="table">The table.</param>
|
|
/// <param name="readOnly">if set to <c>true</c> [read only].</param>
|
|
protected void AddBandColumns(DataTable table, bool readOnly = true)
|
|
{
|
|
if (table == null) return;
|
|
this.mControlList.Clear();
|
|
List<String> bandFieldstr = new List<String>();
|
|
string bandFields = string.Empty;
|
|
foreach (DataRow item in table.Rows)
|
|
{
|
|
GridColumnModel model = new GridColumnModel(item);
|
|
this.ColumnList.Add(model);
|
|
}
|
|
Dictionary<int, TreeListBand> gridBandEmptyDic = new Dictionary<int, TreeListBand>();
|
|
TreeListBand gridBandEmpty = new TreeListBand();
|
|
//this.bandedGridView.OptionsView.ColumnHeaderAutoHeight = DefaultBoolean.True;
|
|
// 添加Band 列
|
|
GridColumnModel[] bandRows = this.ColumnList.Where(x => !string.IsNullOrEmpty(x.BandFields)).ToArray();
|
|
GridColumnModel[] AutobandRows = this.ColumnList.Where(x => x.FieldText.Contains("|")).ToArray();
|
|
GridColumnModel[] bandEmptyRows = null;
|
|
if (true)//this.moduleModel != null && this.moduleModel.BandSequentialMode
|
|
{
|
|
bandEmptyRows = AutobandRows.Length > 0 ? this.ColumnList.Where(x => !x.FieldText.Contains("|") && x.Width > 0).ToArray() : this.ColumnList.Where(x => bandRows.Select(n => n.BandFields.Equals(x.FieldName)).Count() == 0 && x.Width > 0).ToArray();
|
|
foreach (GridColumnModel columnModel in this.ColumnList)
|
|
{
|
|
if (!string.IsNullOrEmpty(columnModel.BandFields))
|
|
{
|
|
TreeListBand gridBand = new TreeListBand();
|
|
gridBand.Caption = columnModel.BandTitle;
|
|
gridBand.AppearanceHeader.Options.UseFont = true;
|
|
gridBand.AppearanceHeader.Font = new Font("宋体", 9, FontStyle.Bold);
|
|
gridBand.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBand.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
|
|
if (columnModel.BandTitle.Contains("\\r\\n"))
|
|
{
|
|
gridBand.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBand.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
|
|
gridBand.Caption = columnModel.BandTitle.Replace("\\r\\n", " ");
|
|
gridBand.RowCount = 2;
|
|
}
|
|
saveGridBands.Add(gridBand);
|
|
gcMain.Bands.AddRange(new TreeListBand[] { gridBand });
|
|
gridBandEmpty = new TreeListBand();//切换时重置空列
|
|
}
|
|
else if (columnModel.FieldText.Contains("|"))
|
|
{
|
|
if (bandRows.Length == 0 && AutobandRows.Length > 0)
|
|
{
|
|
TreeListBand gridBand = new TreeListBand();
|
|
int index = columnModel.FieldText.LastIndexOf("|");
|
|
string bandTitle = columnModel.FieldText.Substring(0, index);
|
|
string bandField = columnModel.FieldText.Substring(index + 1, columnModel.FieldText.Length - index - 1);
|
|
if (bandFieldstr.Contains(bandTitle)) continue;
|
|
bandFieldstr.Add(bandTitle);
|
|
gridBand.Caption = bandTitle;
|
|
gridBand.AppearanceHeader.Options.UseFont = true;
|
|
gridBand.AppearanceHeader.Font = new Font("宋体", 9, FontStyle.Bold);
|
|
gridBand.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBand.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
|
|
if (bandTitle.Contains("\\r\\n"))
|
|
{
|
|
gridBand.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBand.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
|
|
gridBand.Caption = bandTitle.Replace("\\r\\n", " ");
|
|
gridBand.RowCount = 2;
|
|
}
|
|
//gridBand.RowCount = 10;
|
|
//gridBand.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
|
|
saveGridBands.Add(gridBand);
|
|
gcMain.Bands.AddRange(new TreeListBand[] { gridBand });
|
|
gridBandEmpty = new TreeListBand();//切换时重置空列
|
|
}
|
|
}
|
|
else if ((AutobandRows.Length > 0 && !columnModel.FieldText.Contains("|") && columnModel.Width > 0) || (AutobandRows.Length <= 0 && bandRows.Select(n => n.BandFields.Equals(columnModel.FieldName)).Count() == 0 && columnModel.Width > 0))
|
|
{
|
|
// 空白列
|
|
gridBandEmpty.Caption = "";
|
|
gridBandEmpty.AppearanceHeader.Options.UseFont = true;
|
|
gridBandEmpty.AppearanceHeader.Font = new Font("宋体", 9, FontStyle.Bold);
|
|
gridBandEmpty.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBandEmpty.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
|
|
if (!gcMain.Bands.Contains(gridBandEmpty))
|
|
{
|
|
gcMain.Bands.Add(gridBandEmpty);
|
|
}
|
|
gridBandEmptyDic.Add(this.ColumnList.IndexOf(columnModel), gridBandEmpty);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (GridColumnModel item in bandRows)
|
|
{
|
|
TreeListBand gridBand = new TreeListBand();
|
|
gridBand.Caption = item.BandTitle;
|
|
gridBand.AppearanceHeader.Options.UseFont = true;
|
|
gridBand.AppearanceHeader.Font = new Font("宋体", 9, FontStyle.Bold);
|
|
gridBand.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBand.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
|
|
if (item.BandTitle.Contains("\\r\\n"))
|
|
{
|
|
gridBand.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBand.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
|
|
gridBand.Caption = item.BandTitle.Replace("\\r\\n", " ");
|
|
gridBand.RowCount = 2;
|
|
}
|
|
saveGridBands.Add(gridBand);
|
|
gcMain.Bands.AddRange(new TreeListBand[] { gridBand });
|
|
|
|
bandFields += "|" + item.BandFields;
|
|
}
|
|
if (bandRows.Length == 0 && AutobandRows.Length > 0)
|
|
{
|
|
foreach (GridColumnModel item in AutobandRows)
|
|
{
|
|
TreeListBand gridBand = new TreeListBand();
|
|
int index = item.FieldText.LastIndexOf("|");
|
|
string bandTitle = item.FieldText.Substring(0, index);
|
|
string bandField = item.FieldText.Substring(index + 1, item.FieldText.Length - index - 1);
|
|
if (bandFieldstr.Contains(bandTitle)) continue;
|
|
bandFieldstr.Add(bandTitle);
|
|
gridBand.Caption = bandTitle;
|
|
gridBand.AppearanceHeader.Options.UseFont = true;
|
|
gridBand.AppearanceHeader.Font = new Font("宋体", 9, FontStyle.Bold);
|
|
gridBand.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBand.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
|
|
if (bandTitle.Contains("\\r\\n"))
|
|
{
|
|
gridBand.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBand.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
|
|
gridBand.Caption = bandTitle.Replace("\\r\\n", " ");
|
|
gridBand.RowCount = 2;
|
|
}
|
|
//gridBand.RowCount = 10;
|
|
//gridBand.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;
|
|
|
|
saveGridBands.Add(gridBand);
|
|
gcMain.Bands.AddRange(new TreeListBand[] { gridBand });
|
|
bandFields += "|" + bandField;
|
|
}
|
|
}
|
|
bandFields = bandFields + "|";
|
|
// 检查是否包含空白列
|
|
bandEmptyRows = AutobandRows.Length > 0 ? this.ColumnList.Where(x => !x.FieldText.Contains("|") && x.Width > 0).ToArray() : this.ColumnList.Where(x => !bandFields.Contains("|" + x.FieldName + "|") && x.Width > 0).ToArray();
|
|
if (bandEmptyRows != null && bandEmptyRows.Length > 0)
|
|
{
|
|
// 空白列
|
|
gridBandEmpty.Caption = "";
|
|
gridBandEmpty.AppearanceHeader.Options.UseFont = true;
|
|
gridBandEmpty.AppearanceHeader.Font = new Font("宋体", 9, FontStyle.Bold);
|
|
gridBandEmpty.AppearanceHeader.Options.UseTextOptions = true;
|
|
gridBandEmpty.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
|
|
gcMain.Bands.Insert(0, gridBandEmpty);
|
|
}
|
|
}
|
|
// 创建列
|
|
for (int i = 0; i < this.ColumnList.Count; i++)
|
|
{
|
|
GridColumnModel model = this.ColumnList[i];
|
|
//if (model.Width == 0 || !model.Visible) continue;
|
|
int startIndex = model.FieldText.Contains("|") ? model.FieldText.LastIndexOf("|") : 0;
|
|
string FieldText = startIndex > 0 ? model.FieldText.Substring(startIndex + 1, model.FieldText.Length - startIndex - 1) : model.FieldText;
|
|
TreeListColumn gridColumn = new TreeListColumn();
|
|
string bandTitle = startIndex > 0 ? model.FieldText.Substring(0, startIndex) : HasBand(model.FieldName, bandRows);
|
|
|
|
if (!string.IsNullOrEmpty(bandTitle))
|
|
{
|
|
// 绑定了多表头显示
|
|
TreeListBand gridBand = this.gcMain.Bands.Cast<TreeListBand>().FirstOrDefault(x => x.Caption == bandTitle);
|
|
if (gridBand != null)
|
|
{
|
|
gridBand.Columns.Add(gridColumn);
|
|
if (saveGridBandColumn.ContainsKey(gridBand))
|
|
{
|
|
saveGridBandColumn[gridBand] = saveGridBandColumn[gridBand] + model.FieldName + "^";
|
|
}
|
|
else
|
|
{
|
|
saveGridBandColumn.Add(gridBand, model.FieldName + "^");
|
|
}
|
|
|
|
}
|
|
gcMain.Columns.Add(gridColumn);
|
|
}
|
|
else
|
|
{
|
|
// 未绑定多表头则直接显示
|
|
if (bandEmptyRows != null && bandEmptyRows.Contains(model))
|
|
{
|
|
if (true)//this.moduleModel != null && this.moduleModel.BandSequentialMode
|
|
{
|
|
gridBandEmptyDic[this.ColumnList.IndexOf(model)].Columns.Add(gridColumn);
|
|
}
|
|
else
|
|
{
|
|
gridBandEmpty.Columns.Add(gridColumn);
|
|
}
|
|
}
|
|
gcMain.Columns.Add(gridColumn);
|
|
}
|
|
//gridColumn.OptionsColumn.AllowMerge = model.CanMerge ? DefaultBoolean.True : DefaultBoolean.False;
|
|
//if (model != null && model.CanMerge)
|
|
// gcMain.OptionsView.AllowCellMerge = true;//若有合并列则设置表合并,合并后无法多选
|
|
|
|
gridColumn.FieldName = model.FieldName;
|
|
gridColumn.Name = model.FieldName;
|
|
gridColumn.VisibleIndex = i;
|
|
gridColumn.Caption = FieldText;
|
|
gridColumn.Width = model.Width;
|
|
gridColumn.Visible = model.Visible;
|
|
gridColumn.OptionsColumn.AllowEdit = !readOnly && model.Edit;
|
|
gridColumn.Tag = model;
|
|
gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList;
|
|
gridColumn.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
|
|
if (EnabledChangeColor)
|
|
{
|
|
if (!model.Edit)
|
|
{
|
|
gridColumn.AppearanceHeader.Options.UseForeColor = true;
|
|
gridColumn.AppearanceHeader.ForeColor = ColorTranslator.FromHtml(HeaderColor);
|
|
}
|
|
else if (model.CanNull)
|
|
{
|
|
gridColumn.AppearanceHeader.Options.UseForeColor = true;
|
|
gridColumn.AppearanceHeader.ForeColor = RequiredForceColor;
|
|
}
|
|
}
|
|
|
|
this.SetColumnFormat(gridColumn, model);
|
|
this.SetColumnSumming(gridColumn, model);
|
|
this.InitEditColumns(gridColumn, model);
|
|
|
|
}
|
|
// 加载数据源
|
|
//BindDataSource();
|
|
DataTable customTable = this.gcMain.GetCustomColumnByDatabase(this.CustomColumKey);
|
|
this.SetCustomColumns(customTable);
|
|
// 延迟加载数据源
|
|
this.mLoading = false;
|
|
this.mTimer.Tick += new EventHandler(mTimerTick);
|
|
this.mTimer.Start();
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:是否为多表头</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-12-25 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="fieldName">Name of the field.</param>
|
|
/// <param name="bands">The bands.</param>
|
|
protected string HasBand(string fieldName, GridColumnModel[] bands)
|
|
{
|
|
foreach (GridColumnModel model in bands)
|
|
{
|
|
if (("|" + model.BandFields + "|").Contains("|" + fieldName + "|"))
|
|
{
|
|
return model.BandTitle;
|
|
}
|
|
}
|
|
return string.Empty;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建列</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="item">The dr row.</param>
|
|
protected void InitEditColumns(TreeListColumn column, GridColumnModel model)
|
|
{
|
|
switch (model.FieldType)
|
|
{
|
|
case ControlType.LabAutoLinefeedText:
|
|
InitAutoLinefeedEdit(column, model);
|
|
break;
|
|
case ControlType.LabPassWordValue:
|
|
InitPasswordEdit(column, model);
|
|
break;
|
|
case ControlType.LabComboxValue:
|
|
case ControlType.LabComboxText:
|
|
case ControlType.LabComboxValueParam:
|
|
case ControlType.LabComboxTextParam:
|
|
InitComboxEdit(column, model);
|
|
break;
|
|
case ControlType.LabProgressBar:
|
|
InitProgressEdit(column);
|
|
break;
|
|
case ControlType.LabCheckBox:
|
|
InitCheckEdit(column);
|
|
break;
|
|
case ControlType.LabAutoCompleteValue:
|
|
case ControlType.LabAutoCompleteText:
|
|
case ControlType.LabAutoCompleteValueParam:
|
|
case ControlType.LabAutoCompleteTextParam:
|
|
case ControlType.LabAutoGridValue:
|
|
case ControlType.LabAutoGridText:
|
|
case ControlType.LabAutoGridValueParam:
|
|
case ControlType.LabAutoGridTextParam:
|
|
InitAutoSearchEdit(column, model);
|
|
break;
|
|
case ControlType.LabDate:
|
|
case ControlType.LabDateTime:
|
|
case ControlType.LabDateTimeShort:
|
|
case ControlType.LabShortDate:
|
|
InitDateTimeEdit(column, model.FieldType);
|
|
break;
|
|
case ControlType.LabTime:
|
|
case ControlType.LabShortTime:
|
|
InitTimeEdit(column, model.FieldType);
|
|
break;
|
|
case ControlType.LabCalcText:
|
|
InitCalcEdit(column);
|
|
break;
|
|
case ControlType.LabMemoEdit:
|
|
InitMemoEdit(column);
|
|
break;
|
|
case ControlType.LabRemark:
|
|
InitRemarkEdit(column);
|
|
break;
|
|
//case ControlType.LabAccount:
|
|
// this.cellHelper.AddAmountColumn(column, 11);
|
|
// break;
|
|
case ControlType.LabMultiSelectValue:
|
|
case ControlType.LabMultiSelectValueParam:
|
|
case ControlType.LabMultiSelectText:
|
|
case ControlType.LabMultiSelectTextParam:
|
|
InitMutilEdit(column, model);
|
|
break;
|
|
case ControlType.LabTreeLookValue:
|
|
case ControlType.LabTreeLookText:
|
|
case ControlType.LabCheckTreeLookValue:
|
|
case ControlType.LabCheckTreeLookText:
|
|
case ControlType.LabTreeLastlevelValue:
|
|
case ControlType.LabTreeLastlevelText:
|
|
case ControlType.LabCheckTreeLastlevelValue:
|
|
case ControlType.LabCheckTreeLastlevelText:
|
|
InitAutoTreeSearchEdit(column, model, false);
|
|
break;
|
|
case ControlType.LabComboxCheckListValue:
|
|
case ControlType.LabComboxCheckListText:
|
|
InitMutilComboxEdit(column, model);
|
|
break;
|
|
//case ControlType.LabQQ:
|
|
// column.Tag = "QQ";
|
|
// break;
|
|
//case ControlType.LabWWW:
|
|
// column.Tag = "Brower";
|
|
// break;
|
|
case ControlType.LabRichEdit:
|
|
InitRichEdit(column);
|
|
break;
|
|
case ControlType.LabPic:
|
|
InitPicEdit(column);
|
|
break;
|
|
case ControlType.LabSelectReturnId:
|
|
case ControlType.LabSelectReturnText:
|
|
InitSelectReturnId(column, model);
|
|
break;
|
|
case ControlType.LabSelectReturnRows:
|
|
InitSelectReturnRows(column, model);
|
|
break;
|
|
//case ControlType.DynamicallyGeneratedSql:
|
|
// InitSqlGenerate(column, model);
|
|
// break;
|
|
//case ControlType.HighShotMeter:
|
|
// InitHighShotMeterEdit(column, model);
|
|
// break;
|
|
//case ControlType.BarCode128B:
|
|
// InitBarCode128BEdit(column, model);
|
|
// break;
|
|
default:
|
|
break;
|
|
}
|
|
// 特殊处理
|
|
if (ControlType.LabTreeType == model.FieldType && !IsSpecModel)
|
|
{
|
|
InitComboxEdit(column, model);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建自动换行文本框</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitAutoLinefeedEdit(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
DevExpress.XtraEditors.Repository.RepositoryItemMemoEdit AutoLinefeedEdit = new DevExpress.XtraEditors.Repository.RepositoryItemMemoEdit();
|
|
gridColumn.ColumnEdit = AutoLinefeedEdit;
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建下拉列表框</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitPasswordEdit(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
RepositoryItemTextEdit passEdit = new RepositoryItemTextEdit();
|
|
passEdit.UseSystemPasswordChar = true;
|
|
passEdit.PasswordChar = '*';
|
|
gridColumn.ColumnEdit = passEdit;
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建下拉列表框</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitComboxEdit(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
RepositoryItemLookUpEdit comboxEdit = new RepositoryItemLookUpEdit();
|
|
if (model.FontSize > 0) comboxEdit.Appearance.Font = new Font("微软雅黑", model.FontSize);
|
|
comboxEdit.SearchMode = SearchMode.AutoFilter;
|
|
comboxEdit.ShowHeader = false;
|
|
comboxEdit.ImmediatePopup = false;
|
|
comboxEdit.NullText = "";
|
|
comboxEdit.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
comboxEdit.AllowNullInput = DefaultBoolean.False;
|
|
comboxEdit.DisplayMember = model.TextMember;
|
|
comboxEdit.ValueMember = ControlType.LabComboxText == model.FieldType || ControlType.LabComboxTextParam == model.FieldType ? model.TextMember : model.ValueMember;
|
|
//comboxEdit.DataSource = MainImpl.GetDataTableResult(model.SqlSource);
|
|
|
|
|
|
LookUpColumnInfo valueColumn = new LookUpColumnInfo();
|
|
valueColumn.Caption = "编码";
|
|
valueColumn.FieldName = model.ValueMember;
|
|
valueColumn.Visible = false;
|
|
|
|
LookUpColumnInfo textColumn = new LookUpColumnInfo();
|
|
textColumn.Caption = "名称";
|
|
textColumn.FieldName = model.TextMember;
|
|
|
|
comboxEdit.Columns.AddRange(new LookUpColumnInfo[] { valueColumn, textColumn });
|
|
|
|
if (model.SourceRow.Table.Columns.Contains("remark"))
|
|
{
|
|
LookUpColumnInfo remarkColumn = new LookUpColumnInfo();
|
|
remarkColumn.Caption = "备注";
|
|
remarkColumn.FieldName = "remark";
|
|
remarkColumn.Visible = false;
|
|
|
|
comboxEdit.Columns.Add(remarkColumn);
|
|
}
|
|
|
|
gridControl.RepositoryItems.Add(comboxEdit);
|
|
gridColumn.ColumnEdit = comboxEdit;
|
|
|
|
comboxEdit.DataSource = BaseImpl.GetDataTableResult(model.SqlSource);//加载数据源
|
|
|
|
this.mControlList.Add(model);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建进度条控件</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitProgressEdit(TreeListColumn gridColumn)
|
|
{
|
|
RepositoryItemProgressBar progressEdit = new RepositoryItemProgressBar();
|
|
progressEdit.ShowTitle = true;
|
|
|
|
gridControl.RepositoryItems.Add(progressEdit);
|
|
gridColumn.ColumnEdit = progressEdit;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建自动搜索框</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitAutoSearchEdit(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
int popWidth = 0;
|
|
|
|
//DataTable table = MainImpl.GetDataTableResult(ReplaceHelper.ReplaceWhereCond(model.SqlSource) + " and 1<>1");
|
|
RepositoryItemGridLookUpEdit searchEdit = new RepositoryItemGridLookUpEdit();
|
|
if (model.FontSize > 0) searchEdit.View.Appearance.Row.Font = new Font("微软雅黑", model.FontSize);
|
|
searchEdit.View.OptionsView.ShowIndicator = false;
|
|
|
|
searchEdit.View.OptionsView.ColumnAutoWidth = false;
|
|
searchEdit.PopupSizeable = true;
|
|
searchEdit.PopupResizeMode = ResizeMode.Default;
|
|
|
|
searchEdit.AllowFocused = true;
|
|
searchEdit.ImmediatePopup = true;
|
|
|
|
searchEdit.ShowFooter = false;
|
|
searchEdit.NullText = "";
|
|
searchEdit.TextEditStyle = TextEditStyles.Standard;
|
|
searchEdit.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
searchEdit.AllowNullInput = DefaultBoolean.False;
|
|
searchEdit.ShowPopupShadow = true;
|
|
searchEdit.DisplayMember = model.TextMember;
|
|
searchEdit.ValueMember = ControlType.LabAutoCompleteText == model.FieldType || ControlType.LabAutoCompleteTextParam == model.FieldType ||
|
|
ControlType.LabAutoGridText == model.FieldType || ControlType.LabAutoGridTextParam == model.FieldType
|
|
? model.TextMember : model.ValueMember;
|
|
//searchEdit.DataSource = table;
|
|
searchEdit.Tag = model;
|
|
searchEdit.View.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center;
|
|
searchEdit.View.PopupMenuShowing += OnAutoSearchEditPopupMenuShowing;
|
|
searchEdit.KeyDown += OnsearchEditKeyDown;
|
|
searchEdit.QueryPopUp += new CancelEventHandler(OnSearchEditQueryPopUp);
|
|
DataTable cusTable = new DataTable();
|
|
|
|
DevExpress.XtraGrid.Columns.GridColumn valueColumn = new DevExpress.XtraGrid.Columns.GridColumn();
|
|
valueColumn.Name = valueColumn.FieldName = model.ValueMember;
|
|
valueColumn.Caption = "编码";
|
|
valueColumn.Visible = model.ValueMember.Substring(0, 1) != "_";
|
|
|
|
DevExpress.XtraGrid.Columns.GridColumn textColumn = new DevExpress.XtraGrid.Columns.GridColumn();
|
|
textColumn.Name = textColumn.FieldName = model.TextMember;
|
|
textColumn.Caption = "名称";
|
|
textColumn.Visible = model.TextMember.Substring(0, 1) != "_";
|
|
|
|
searchEdit.View.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { valueColumn, textColumn });
|
|
|
|
searchEdit.PopupFormSize = new System.Drawing.Size(popWidth, searchEdit.PopupFormSize.Height);
|
|
gridControl.RepositoryItems.Add(searchEdit);
|
|
gridColumn.ColumnEdit = searchEdit;
|
|
searchEdit.View.Tag = searchEdit;
|
|
searchEdit.EditValueChanging += gridLookUpEdit1_EditValueChanging;
|
|
searchEdit.View.CustomDrawFilterPanel += OnCustomDrawFilterPanel;
|
|
searchEdit.View.Click += new EventHandler(View_Click);
|
|
|
|
//加载数据源
|
|
DataTable table = BaseImpl.GetDataTableResult(model.SqlSource);
|
|
searchEdit.DataSource = table;
|
|
if (table.Columns.Contains("remark"))
|
|
{
|
|
DevExpress.XtraGrid.Columns.GridColumn remarkColumn = new DevExpress.XtraGrid.Columns.GridColumn();
|
|
remarkColumn.Caption = "备注";
|
|
remarkColumn.Name = remarkColumn.FieldName = "remark";
|
|
remarkColumn.Visible = true;
|
|
|
|
searchEdit.View.Columns.Add(remarkColumn);
|
|
}
|
|
|
|
foreach (DataColumn dcol in table.Columns)
|
|
{
|
|
if ((dcol.ColumnName.Substring(0, 1) != "_"))
|
|
{
|
|
if ((dcol.ColumnName.ToLower() != model.ValueMember.ToLower()) && (dcol.ColumnName.ToLower() != model.TextMember.ToLower()) && (dcol.ColumnName.ToLower() != "remark") && ((int)dcol.ColumnName[0] > 127))
|
|
{
|
|
DevExpress.XtraGrid.Columns.GridColumn otherColumn = new DevExpress.XtraGrid.Columns.GridColumn();
|
|
otherColumn.Name = otherColumn.FieldName = otherColumn.Caption = dcol.ColumnName;
|
|
otherColumn.Visible = true;
|
|
searchEdit.View.Columns.Add(otherColumn);
|
|
}
|
|
if (searchEdit.View.Columns.FirstOrDefault(x => x.FieldName == dcol.ColumnName) != null)
|
|
{
|
|
DevExpress.XtraGrid.Columns.GridColumn gCol = searchEdit.View.Columns[dcol.ColumnName];
|
|
gCol.Width = CalcMaxColumnWidth(table, gCol.Name);
|
|
popWidth += gCol.Width;
|
|
}
|
|
}
|
|
}
|
|
searchEdit.PopupFormSize = new System.Drawing.Size(popWidth, searchEdit.PopupFormSize.Height);
|
|
|
|
this.mControlList.Add(model);
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <para>说明:创建DateTime控件</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
/// <param name="fieldType">Type of the field.</param>
|
|
public void InitDateTimeEdit(TreeListColumn gridColumn, int fieldType)
|
|
{
|
|
RepositoryItemDateEdit dateEdit = new RepositoryItemDateEdit();
|
|
dateEdit.DisplayFormat.FormatString = dateEdit.EditFormat.FormatString = dateEdit.Mask.EditMask = DateFormat.Format(fieldType);
|
|
dateEdit.DisplayFormat.FormatType = dateEdit.EditFormat.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
|
|
if (fieldType == ControlType.LabDateTime)
|
|
{
|
|
dateEdit.Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True;
|
|
dateEdit.Properties.VistaEditTime = DevExpress.Utils.DefaultBoolean.True;
|
|
}
|
|
|
|
if (fieldType == ControlType.LabShortDate)
|
|
{
|
|
dateEdit.Properties.Mask.UseMaskAsDisplayFormat = true;//掩码属性使用掩码作为显示格式
|
|
dateEdit.Properties.DisplayFormat.FormatType = dateEdit.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
dateEdit.Properties.VistaCalendarInitialViewStyle = DevExpress.XtraEditors.VistaCalendarInitialViewStyle.YearView;
|
|
dateEdit.Properties.VistaCalendarViewStyle = DevExpress.XtraEditors.VistaCalendarViewStyle.YearView;
|
|
}
|
|
//dateEdit.Closed += new ClosedEventHandler(dateEdit_Closed);
|
|
|
|
gridControl.RepositoryItems.Add(dateEdit);
|
|
gridColumn.ColumnEdit = dateEdit;
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建Time控件</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
/// <param name="fieldType">Type of the field.</param>
|
|
public void InitTimeEdit(TreeListColumn gridColumn, int fieldType)
|
|
{
|
|
RepositoryItemTimeEdit timeEdit = new RepositoryItemTimeEdit();
|
|
timeEdit.DisplayFormat.FormatString = timeEdit.EditFormat.FormatString = timeEdit.Mask.EditMask = DateFormat.Format(fieldType);
|
|
timeEdit.DisplayFormat.FormatType = timeEdit.EditFormat.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
|
|
gridControl.RepositoryItems.Add(timeEdit);
|
|
gridColumn.ColumnEdit = timeEdit;
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建计算器控件</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitCalcEdit(TreeListColumn gridColumn)
|
|
{
|
|
RepositoryItemCalcEdit calcEdit = new RepositoryItemCalcEdit();
|
|
calcEdit.AllowMouseWheel = false;
|
|
|
|
gridControl.RepositoryItems.Add(calcEdit);
|
|
gridColumn.ColumnEdit = calcEdit;
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建备注框</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitMemoEdit(TreeListColumn gridColumn)
|
|
{
|
|
RepositoryItemMemoExEdit memoEdit = new RepositoryItemMemoExEdit();
|
|
memoEdit.WordWrap = true;
|
|
memoEdit.ShowIcon = false;
|
|
if (!gridColumn.OptionsColumn.AllowEdit)
|
|
{
|
|
gridColumn.OptionsColumn.AllowEdit = true;
|
|
//设置只读
|
|
memoEdit.ReadOnly = true;
|
|
//只读状态允许下拉列表
|
|
memoEdit.AllowDropDownWhenReadOnly = DefaultBoolean.True;
|
|
}
|
|
gridControl.RepositoryItems.Add(memoEdit);
|
|
gridColumn.ColumnEdit = memoEdit;
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建备注框</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2019-08-15 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitRemarkEdit(TreeListColumn gridColumn)
|
|
{
|
|
RepositoryItemMemoEdit memo = new RepositoryItemMemoEdit();
|
|
memo.Appearance.TextOptions.WordWrap = WordWrap.Wrap;//自动换行
|
|
gridControl.RepositoryItems.Add(memo);
|
|
gridColumn.ColumnEdit = memo;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建多选框</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitMutilEdit(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
FrmLookUp mutilLookUp = new FrmLookUp();
|
|
mutilLookUp.ValueField = model.ValueMember;
|
|
mutilLookUp.TextField = model.TextMember;
|
|
mutilLookUp.SourceSQL = model.SqlSource;
|
|
mutilLookUp.IsType = model.FieldType;
|
|
mutilLookUp.ValueMember = model.FieldType == ControlType.LabMultiSelectValue ||
|
|
model.FieldType == ControlType.LabMultiSelectValueParam ? model.ValueMember : model.TextMember;
|
|
mutilLookUp.Tag = model;
|
|
|
|
RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit();
|
|
btnEdit.NullText = "";
|
|
btnEdit.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
btnEdit.AllowNullInput = DefaultBoolean.False;
|
|
btnEdit.DisplayMember = model.TextMember;
|
|
btnEdit.SeparatorChar = ',';
|
|
btnEdit.ValueMember = model.FieldType == ControlType.LabMultiSelectValue ||
|
|
model.FieldType == ControlType.LabMultiSelectValueParam ? model.ValueMember : model.TextMember;
|
|
btnEdit.DataSource = MainImpl.GetDataTableResult(model.SqlSource);
|
|
btnEdit.Buttons[0].Visible = false; // 不能移除,移除后事件不起作用.
|
|
btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) });
|
|
|
|
btnEdit.Tag = model;
|
|
btnEdit.Buttons[1].Tag = mutilLookUp;
|
|
btnEdit.ButtonClick += new ButtonPressedEventHandler(OnButtonEditClick);
|
|
gridControl.RepositoryItems.Add(btnEdit);
|
|
gridColumn.OptionsColumn.ReadOnly = true;
|
|
gridColumn.ColumnEdit = btnEdit;
|
|
|
|
this.mControlList.Add(model);
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建树节点自动搜索框</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2021-03-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitAutoTreeSearchEdit(TreeListColumn gridColumn, GridColumnModel model, bool isMulitClick = true, bool isRootNode = true)
|
|
{
|
|
PubTreeLookUp _popup = new PubTreeLookUp();
|
|
//_popup.LookUp = gridColumn;
|
|
_popup.ValueMember = ControlType.LabTreeLookValue == model.FieldType || ControlType.LabCheckTreeLookValue == model.FieldType || ControlType.LabTreeLastlevelValue == model.FieldType || ControlType.LabCheckTreeLastlevelValue == model.FieldType ? model.ValueMember : model.TextMember;
|
|
_popup.ValueField = model.ValueMember;
|
|
_popup.TextMember = model.TextMember;
|
|
_popup.SourceSQL = model.SqlSource;
|
|
_popup.TreeViewObj.CheckBoxes = isMulitClick;
|
|
DataTable table = MainImpl.GetDataTableResult(model.SqlSource);
|
|
_popup.SetDataSource(table);
|
|
_popup.Dock = DockStyle.Fill;
|
|
_popup.model = model;
|
|
_popup.isRootNode = isRootNode;
|
|
RepositoryItemPopupContainerEdit btnEdit = new RepositoryItemPopupContainerEdit();
|
|
btnEdit.NullText = "";
|
|
btnEdit.Buttons.Clear();
|
|
btnEdit.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//文本框可输入
|
|
btnEdit.MouseDown += new MouseEventHandler(OnAutoGridLookUpGotFocus);
|
|
btnEdit.KeyUp += new KeyEventHandler(OnAutoGridLookUpKeyUp);
|
|
|
|
btnEdit.PopupControl = new PopupContainerControl();
|
|
btnEdit.PopupControl.AllowDrop = true;
|
|
btnEdit.PopupControl.Controls.Add(_popup);
|
|
if (isMulitClick) _popup.TreeViewExObj.OnGridViewEnter += OnPopupGridViewEnter;
|
|
if (!isMulitClick) _popup.TreeViewExObj.OnTreeNodeMouseClick += OnPopupGridMouseClick;
|
|
btnEdit.PopupControl.Tag = _popup;
|
|
btnEdit.QueryPopUp += OnQueryPopUp;
|
|
if (model.FieldType == ControlType.LabTreeLookValue || model.FieldType == ControlType.LabCheckTreeLookValue || ControlType.LabTreeLastlevelValue == model.FieldType || ControlType.LabCheckTreeLastlevelValue == model.FieldType) btnEdit.QueryDisplayText += OnQueryDisplayText;
|
|
btnEdit.Tag = model;
|
|
gridControl.RepositoryItems.Add(btnEdit);
|
|
//gridColumn.OptionsColumn.ReadOnly = true;
|
|
gridColumn.ColumnEdit = btnEdit;
|
|
this.mControlList.Add(model);
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期: </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
/// <param name="model">The model.</param>
|
|
public void InitMutilComboxEdit(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
RepositoryItemCheckedComboBoxEdit comboxEdit = new RepositoryItemCheckedComboBoxEdit();
|
|
comboxEdit.AllowFocused = true;
|
|
comboxEdit.DataSource = MainImpl.GetDataTableResult(model.SqlSource);
|
|
comboxEdit.DisplayMember = model.TextMember;
|
|
comboxEdit.ValueMember = model.FieldType == ControlType.LabComboxCheckListValue ? model.ValueMember : model.TextMember;
|
|
comboxEdit.NullText = "";
|
|
|
|
gridControl.RepositoryItems.Add(comboxEdit);
|
|
gridColumn.ColumnEdit = comboxEdit;
|
|
|
|
this.mControlList.Add(model);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:富文本编辑框</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-06-01 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
/// <param name="model">The model.</param>
|
|
public void InitRichEdit(TreeListColumn gridColumn)
|
|
{
|
|
RepositoryItemRichTextEdit richEdit = new RepositoryItemRichTextEdit();
|
|
richEdit.Encoding = Encoding.UTF8;//乱码问题
|
|
gridControl.RepositoryItems.Add(richEdit);
|
|
gridColumn.ColumnEdit = richEdit;
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:表格图片</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-08-02 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
public void InitPicEdit(TreeListColumn gridColumn)
|
|
{
|
|
RepositoryItemPictureEdit picEdit = new RepositoryItemPictureEdit();
|
|
picEdit.AutoHeight = true;
|
|
picEdit.SizeMode = PictureSizeMode.Zoom;
|
|
picEdit.BestFitWidth = 16;
|
|
picEdit.CustomHeight = 16;
|
|
gridColumn.ColumnEdit = picEdit;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建 模块返回ID</para>
|
|
/// <para>创建人:曹屹峰</para>
|
|
/// <para>创建日期:2021-08-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
private void InitSelectReturnId(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
FrmModelLookUp modelLookUp = new FrmModelLookUp(model.addModuleld);
|
|
modelLookUp.ValueField = model.ValueMember;
|
|
modelLookUp.TextField = model.TextMember;
|
|
modelLookUp.SourceSQL = model.SqlSource;
|
|
modelLookUp.IsType = model.FieldType;
|
|
modelLookUp.ValueMember = model.FieldType == ControlType.LabSelectReturnId ? model.ValueMember : model.TextMember;
|
|
modelLookUp.Tag = model;
|
|
|
|
RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit();
|
|
btnEdit.NullText = "";
|
|
btnEdit.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
btnEdit.AllowNullInput = DefaultBoolean.False;
|
|
btnEdit.DisplayMember = model.TextMember;
|
|
btnEdit.SeparatorChar = ',';
|
|
btnEdit.ValueMember = model.FieldType == ControlType.LabSelectReturnId ? model.ValueMember : model.TextMember;
|
|
btnEdit.DataSource = MainImpl.GetDataTableResult(model.SqlSource);
|
|
btnEdit.Buttons[0].Visible = false; // 不能移除,移除后事件不起作用.
|
|
btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) });
|
|
|
|
btnEdit.Tag = model;
|
|
btnEdit.Buttons[1].Tag = modelLookUp;
|
|
btnEdit.ButtonClick += new ButtonPressedEventHandler(OnModuleChoice);
|
|
|
|
gridControl.RepositoryItems.Add(btnEdit);
|
|
gridColumn.OptionsColumn.ReadOnly = true;
|
|
gridColumn.ColumnEdit = btnEdit;
|
|
|
|
this.mControlList.Add(model);
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建 模块返回行数据</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-4 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
private void InitSelectReturnRows(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
FrmRowsModelLookUp modelLookUp = new FrmRowsModelLookUp();
|
|
modelLookUp.UnionModuleCodel = model.addModuleld;
|
|
modelLookUp.gridColumnModel = model;
|
|
modelLookUp.ValueField = model.ValueMember;
|
|
modelLookUp.TextField = model.TextMember;
|
|
modelLookUp.SourceSQL = model.SqlSource;
|
|
modelLookUp.IsType = model.FieldType;
|
|
modelLookUp.ValueMember = model.FieldType == ControlType.LabSelectReturnId ? model.ValueMember : model.TextMember;
|
|
modelLookUp.selectField = gridColumn.FieldName;
|
|
modelLookUp.Tag = model;
|
|
|
|
RepositoryItemButtonEdit btnEdit = new RepositoryItemButtonEdit();
|
|
btnEdit.NullText = "";
|
|
btnEdit.AllowNullInput = DefaultBoolean.False;
|
|
//RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit();
|
|
//btnEdit.NullText = "";
|
|
//btnEdit.PopupBorderStyle = PopupBorderStyles.Flat;
|
|
//btnEdit.AllowNullInput = DefaultBoolean.False;
|
|
//btnEdit.DisplayMember = model.TextMember;
|
|
//btnEdit.SeparatorChar = ',';
|
|
//btnEdit.ValueMember = model.FieldType == ControlType.LabSelectReturnId ? model.ValueMember : model.TextMember;
|
|
//btnEdit.DataSource = MainImpl.GetDataTableResult(model.SqlSource);
|
|
btnEdit.Buttons[0].Visible = false; // 不能移除,移除后事件不起作用.
|
|
btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) });
|
|
|
|
btnEdit.Tag = model;
|
|
btnEdit.Buttons[1].Tag = modelLookUp;
|
|
btnEdit.ButtonClick += new ButtonPressedEventHandler(OnModuleRowsChoice);
|
|
|
|
gridControl.RepositoryItems.Add(btnEdit);
|
|
gridColumn.OptionsColumn.ReadOnly = true;
|
|
gridColumn.ColumnEdit = btnEdit;
|
|
|
|
this.mControlList.Add(model);
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:创建CheckBoxEdit</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-08-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
public void InitCheckEdit(TreeListColumn gridColumn)
|
|
{
|
|
RepositoryItemCheckEdit checkEdit = new RepositoryItemCheckEdit();
|
|
checkEdit.ValueChecked = 1;
|
|
checkEdit.ValueUnchecked = 0;
|
|
|
|
gridControl.RepositoryItems.Add(checkEdit);
|
|
gridColumn.ColumnEdit = checkEdit;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:列菜单配置</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-08-09 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="PopupMenuShowingEventArgs"/> instance containing the event data.</param>
|
|
private void OnPopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (e.Menu.MenuType == TreeListMenuType.Column)
|
|
{
|
|
TreeList treeList = sender as TreeList;
|
|
TreeListHitInfo hitInfo = treeList.CalcHitInfo(e.Point);
|
|
TreeListMenu columnMenu = e.Menu as TreeListMenu;
|
|
|
|
DXMenuItem itemFixLeft = new DXMenuItem("冻结列", FixLeftItemClick);
|
|
DXMenuItem itemFixLeftAll = new DXMenuItem("冻结列(所有列)", FixLeftAllItemClick);
|
|
DXMenuItem itemUnFix = new DXMenuItem("清除冻结", UnFixItemClick);
|
|
|
|
DXMenuItem itemSaveColumn = new DXMenuItem("保存表格属性", SaveItemClick);
|
|
DXMenuItem itemResetColumn = new DXMenuItem("重置表格属性", ResetItemClick);
|
|
DXMenuItem itemExportColumn = new DXMenuItem("导出表格数据", ExportItemClick);
|
|
DXMenuItem itemPrintColumn = new DXMenuItem("打印表格数据", PrintItemClick);
|
|
DXMenuItem itemSortColumn = new DXMenuItem("清除全部列排序", ClearSortItemClick);
|
|
|
|
itemSaveColumn.BeginGroup = itemFixLeft.BeginGroup = true;
|
|
|
|
itemFixLeft.Tag = itemFixLeftAll.Tag = itemUnFix.Tag = hitInfo.Column;
|
|
itemSaveColumn.Tag = itemResetColumn.Tag = itemExportColumn.Tag = itemPrintColumn.Tag = itemSortColumn.Tag = hitInfo.Column;
|
|
|
|
columnMenu.Items.AddRange(new DXMenuItem[] { itemFixLeft, itemFixLeftAll, itemUnFix });
|
|
if (!string.IsNullOrEmpty(CustomColumKey)) columnMenu.Items.AddRange(new DXMenuItem[] { itemSaveColumn, itemResetColumn });
|
|
columnMenu.Items.AddRange(new DXMenuItem[] { itemExportColumn, itemPrintColumn, itemSortColumn });
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:冻结列点击</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-08-09 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
|
|
protected override void FixLeftItemClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
TreeListColumn column = item.Tag as TreeListColumn;
|
|
column.Fixed = FixedStyle.Left;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:冻结所有列</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-08-09 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
|
|
protected override void FixLeftAllItemClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
TreeListColumn column = item.Tag as TreeListColumn;
|
|
TreeList treeList = sender as TreeList;
|
|
foreach (TreeListColumn col in treeList.Columns)
|
|
{
|
|
if (col.AbsoluteIndex <= column.AbsoluteIndex)
|
|
{
|
|
col.Fixed = FixedStyle.Left;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:取消冻结列</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-02-01 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
protected override void UnFixItemClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
DXMenuItem item = sender as DXMenuItem;
|
|
TreeListColumn column = item.Tag as TreeListColumn;
|
|
column.Fixed = FixedStyle.None;
|
|
column.VisibleIndex = column.AbsoluteIndex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置编辑列</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-08-09 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="table">The table.</param>
|
|
/// <param name="customColumKey">The custom colum key.</param>
|
|
public override void SetEditColumns(DataTable table, string customColumKey = "")
|
|
{
|
|
if (table == null) return;
|
|
this.CustomColumKey = customColumKey;
|
|
//设置列头自动高度
|
|
this.gcMain.OptionsView.ColumnHeaderAutoHeight = DefaultBoolean.True;
|
|
base.ColumnList.Clear();
|
|
this.gcMain.Bands.Clear();
|
|
this.gcMain.Columns.Clear();
|
|
this.AddBandColumns(table, false);
|
|
DataTable customTable = this.gcMain.GetCustomColumnByDatabase(this.CustomColumKey);
|
|
this.SetCustomColumns(customTable);
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置编辑列</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-08-09 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="table">The table.</param>
|
|
/// <param name="customColumKey">The custom colum key.</param>
|
|
public void InitializeTreeMethod()
|
|
{
|
|
this.TreeListObj.CellValueChanging += new DevExpress.XtraTreeList.CellValueChangedEventHandler(OnCellValueChaning);
|
|
}
|
|
|
|
|
|
protected void OnCellValueChaning(object sender, CellValueChangedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
TreeListColumn gridColumn = e.Column;
|
|
SetCheckedChildNodes(e.Node, e.Value, gridColumn);
|
|
SetCheckedParentNodes(e.Node, e.Value, gridColumn);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置子节点的状态</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2020-05-12 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="node">The node.</param>
|
|
/// <param name="check">The check.</param>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
protected void SetCheckedChildNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, Object check, TreeListColumn gridColumn)
|
|
{
|
|
for (int i = 0; i < node.Nodes.Count; i++)
|
|
{
|
|
node.Nodes[i].SetValue(gridColumn, check);
|
|
SetCheckedChildNodes(node.Nodes[i], check, gridColumn);
|
|
}
|
|
node.SetValue(gridColumn, check);
|
|
SetCheckedParentNodes(node, check, gridColumn);
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置父节点的状态</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2020-05-12 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="node">The node.</param>
|
|
/// <param name="check">The check.</param>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
protected void SetCheckedParentNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, Object check, TreeListColumn gridColumn)
|
|
{
|
|
if (node.ParentNode != null)
|
|
{
|
|
bool b = false;
|
|
int state;
|
|
for (int i = 0; i < node.ParentNode.Nodes.Count; i++)
|
|
{
|
|
state = (int)(node.ParentNode.Nodes[i].GetValue(gridColumn));
|
|
if ((int)check != state)
|
|
{
|
|
b = !b;
|
|
break;
|
|
}
|
|
}
|
|
node.ParentNode.SetValue(gridColumn, b ? CheckState.Indeterminate : check);
|
|
SetCheckedParentNodes(node.ParentNode, check, gridColumn);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2019-11-11 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
protected void SetGridRowHeightAndFont()
|
|
{
|
|
if (SystemInfo.Instance.GridRowFontSize > 0)
|
|
this.gcMain.Appearance.Row.Font = new Font("微软雅黑", SystemInfo.Instance.GridRowFontSize);
|
|
if (SystemInfo.Instance.GridRowHeight > 0)
|
|
{
|
|
this.gcMain.ColumnPanelRowHeight = this.gcMain.RowHeight = SystemInfo.Instance.GridRowHeight;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:保存树表格表格属性</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2019-11-14 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
protected override void SaveItemClick(object sender, EventArgs e)
|
|
{
|
|
if (string.IsNullOrEmpty(this.CustomColumKey))
|
|
{
|
|
MessageUtil.Show(ResourceKeys.NotSettingResetColumn);
|
|
return;
|
|
}
|
|
|
|
DataRow rowItem = null;
|
|
bool success = BaseImpl.HasExistsDataRow(ResourceKeys.SettingTableName, "formKey", CustomColumKey.ToString(), string.Format(" and OperatorName='{0}' ", ERPInfo.Instance.UserName), out rowItem);
|
|
if (!success)
|
|
{
|
|
MessageUtil.Show(ResourceKeys.NotFoundSettingColumnTable);
|
|
return;
|
|
}
|
|
|
|
if (MessageUtil.Show(ResourceKeys.IsSaveColumn, MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
try
|
|
{
|
|
if (rowItem == null)
|
|
{
|
|
success = this.gcMain.SaveCustomColumnToDatabase(this.CustomColumKey);
|
|
}
|
|
else
|
|
{
|
|
success = this.gcMain.UpdateCustomColumnToDatabase(this.CustomColumKey);
|
|
}
|
|
|
|
MessageUtil.Show(success ? ResourceKeys.SaveSuccess : ResourceKeys.SaveFault);
|
|
}
|
|
catch (SqlException sex)
|
|
{
|
|
if (sex.Message.Contains(ResourceKeys.FieldLenIsShort) &&
|
|
MessageUtil.Show(ResourceKeys.SaveFault + "\r\n" + ResourceKeys.CanUpgradeTable, MessageBoxButtons.YesNo) == DialogResult.Yes &&
|
|
|
|
|
|
|
|
|
|
BaseImpl.UpdateTableField(ResourceKeys.SettingTableName, "formKey", "varchar(200)"))
|
|
{
|
|
MessageUtil.Show(ResourceKeys.UpdateSuccess);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
LogUtil.WriteError("保存表格属性出错", ex);
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:重置树表格属性</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2019-11-14 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
protected override void ResetItemClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(this.CustomColumKey))
|
|
{
|
|
MessageUtil.Show(ResourceKeys.NotSettingResetColumn);
|
|
return;
|
|
}
|
|
if (!BaseImpl.HasExistsTable(ResourceKeys.SettingTableName))
|
|
{
|
|
MessageUtil.Show(ResourceKeys.NotFoundSettingColumnTable);
|
|
return;
|
|
}
|
|
if (MessageUtil.Show(ResourceKeys.IsResetColumn, MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
bool success = this.gcMain.ResetCustomColumnToDatabase(this.CustomColumKey);
|
|
|
|
DataTable customTable = this.gcMain.GetCustomColumnByDatabase(this.CustomColumKey);
|
|
this.SetCustomColumns(customTable, false);
|
|
MessageUtil.Show(success ? ResourceKeys.ResetSuccess : ResourceKeys.ResetFault);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置列格式化</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-03-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
/// <param name="model">The model.</param>
|
|
private void SetColumnFormat(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
if (gridColumn == null || model == null) return;
|
|
|
|
// 格式化数字
|
|
if (!string.IsNullOrEmpty(model.DataFormat))
|
|
{
|
|
if (model.FieldType == ControlType.LabTextInt || model.FieldType == ControlType.LabCalcText)
|
|
{
|
|
gridColumn.Format.FormatType = FormatType.Numeric;
|
|
gridColumn.Format.FormatString = model.DataFormat;
|
|
}
|
|
else
|
|
{
|
|
gridColumn.Format.FormatType = FormatType.Custom;
|
|
gridColumn.Format.FormatString = model.DataFormat;
|
|
}
|
|
}
|
|
// 特殊字段格式化
|
|
if (model.CanAccuracy)
|
|
{
|
|
gridColumn.Format.FormatType = FormatType.Numeric;
|
|
gridColumn.Format.FormatString = "F2";
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置列汇总</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-03-21 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
/// <param name="model">The model.</param>
|
|
private void SetColumnSumming(TreeListColumn gridColumn, GridColumnModel model)
|
|
{
|
|
// 设置底部合计
|
|
if (gridColumn.VisibleIndex == 0)
|
|
{
|
|
gcMain.OptionsView.ShowSummaryFooter = true;
|
|
gridColumn.AllNodesSummary = true;
|
|
gridColumn.SummaryFooter = SummaryItemType.Count;
|
|
gridColumn.RowFooterSummaryStrFormat = "合计:{0:#,###}行";
|
|
}
|
|
else
|
|
{
|
|
if (model.CanSum)
|
|
{
|
|
gcMain.OptionsView.ShowSummaryFooter = true;
|
|
gridColumn.AllNodesSummary = true;
|
|
gridColumn.SummaryFooter = DevExpress.XtraTreeList.SummaryItemType.Sum;
|
|
gridColumn.RowFooterSummaryStrFormat = "{0:" + model.DataFormat + "}";
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置树表格自定义列</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2019-11-14 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
protected override void SetCustomColumns(DataTable customTable, bool isInit = true)
|
|
{
|
|
Dictionary<object, Hashtable> dataCaches = Model != null ? Model.DataCaches : null;
|
|
if (!dataCaches.GetValue(this, "HasExistsSettingTable", out bool hasExistsSettingTable))
|
|
{
|
|
hasExistsSettingTable = BaseImpl.HasExistsTable(ResourceKeys.SettingTableName);
|
|
}
|
|
if (string.IsNullOrEmpty(this.CustomColumKey) || !hasExistsSettingTable) return;
|
|
if (customTable != null && customTable.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow rowItem in customTable.Rows)
|
|
{
|
|
string fieldName = rowItem["fieldName"] + "";
|
|
int fieldWidth = Convert.ToInt32(rowItem["fieldWidth"]);
|
|
int index = Convert.ToInt32(rowItem["orderid"]);
|
|
bool visible = "1".Equals(rowItem["isVisible"] + "") && fieldWidth > 0;
|
|
bool isFix = "True".Equals(rowItem["IfFixColumn"] + "", StringComparison.OrdinalIgnoreCase);
|
|
|
|
GridColumnModel column = this.ColumnList.Find(x => x.FieldName == fieldName);
|
|
TreeListColumn gridColumn = this.gcMain.Columns.ColumnByName(fieldName);
|
|
if (column != null && gridColumn != null && gridColumn.Visible && gridColumn.Width > 0)
|
|
{
|
|
TreeListColumn colObj = this.gcMain.Columns[fieldName];
|
|
colObj.VisibleIndex = index;
|
|
colObj.Width = fieldWidth;
|
|
colObj.Visible = visible;
|
|
colObj.Fixed = isFix ? FixedStyle.Left : FixedStyle.None;
|
|
}
|
|
}
|
|
}
|
|
if (!isInit)
|
|
{
|
|
// 非初始化,假如未配置则初始化到系统配置
|
|
for (int i = 0; i < this.ColumnList.Count; i++)
|
|
{
|
|
GridColumnModel column = this.ColumnList[i];
|
|
if (this.gcMain.Columns.ColumnByName(column.FieldName) != null)
|
|
{
|
|
TreeListColumn colObj = this.gcMain.Columns[column.FieldName];
|
|
colObj.VisibleIndex = i;
|
|
colObj.Width = column.Width;
|
|
colObj.Visible = column.Visible;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:监听树表格键盘事件</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2019-11-04 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="KeyEventArgs"/> instance containing the event data.</param>
|
|
protected virtual void OnTreeGridViewKeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
// 复制单元格
|
|
if (e.Control && e.KeyCode == Keys.C)
|
|
{
|
|
var selectNodes = this.gcMain.Selection;
|
|
if (selectNodes != null && selectNodes.Count == 1)
|
|
{
|
|
//object obj = gridView.GetFocusedRowCellValue(gridView.FocusedColumn);
|
|
object obj = this.gcMain.FocusedNode.GetDisplayText(this.gcMain.FocusedColumn);
|
|
if (obj != null)
|
|
{
|
|
Clipboard.SetDataObject(obj + "");
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
else if (selectNodes != null && selectNodes.Count > 1)
|
|
{
|
|
DataRow[] dataRows = new DataRow[selectNodes.Count];
|
|
string copySummary = string.Empty;
|
|
for (int i = 0; i < selectNodes.Count; i++)
|
|
{
|
|
TreeListNode treeNode = selectNodes[i];
|
|
List<TreeListColumn> cells = gcMain.GetSelectedCells(treeNode);
|
|
DataRowView dataRowView = this.gcMain.GetDataRecordByNode(treeNode) as DataRowView;
|
|
dataRows[i] = dataRowView != null ? dataRowView.Row : null;
|
|
foreach (TreeListColumn cell in cells)
|
|
{
|
|
copySummary += dataRows[i][cell.Name] + "\t";
|
|
}
|
|
copySummary += "\n";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(copySummary))
|
|
{
|
|
copySummary = copySummary.TrimEnd('\n');
|
|
Clipboard.SetDataObject(copySummary);
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
gcMain.CopyToClipboard();
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
else if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.V)
|
|
{
|
|
//if (this.gridView.IsFindPanelVisible)
|
|
//{
|
|
// MessageUtil.Show("搜索模式下无法粘贴行.");
|
|
// return;
|
|
//}
|
|
object _objData = null;
|
|
IDataObject dataObj = Clipboard.GetDataObject();
|
|
|
|
if (dataObj.GetDataPresent(DataFormats.Text))
|
|
_objData = dataObj.GetData(DataFormats.Text);
|
|
NewPasteMethod(e, _objData);
|
|
}
|
|
else if (e.Control && e.KeyCode == Keys.F)
|
|
{
|
|
this.gcMain.ShowFindPanel();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <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 override DataRow GetViewFocusedDataRow()
|
|
{
|
|
TreeListNode treeNode = this.gcMain.FocusedNode as TreeListNode;
|
|
|
|
if (treeNode != null)
|
|
{
|
|
DataRowView dataRowView = this.gcMain.GetDataRecordByNode(treeNode) as DataRowView;
|
|
return dataRowView != null ? dataRowView.Row : null;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
|
|
/// <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 override DataRow[] GetViewFocusedDataRows()
|
|
{
|
|
var selectNodes = this.gcMain.Selection;
|
|
DataRow[] dataRows = new DataRow[selectNodes.Count];
|
|
|
|
for (int i = 0; i < selectNodes.Count; i++)
|
|
{
|
|
TreeListNode treeNode = selectNodes[i];
|
|
DataRowView dataRowView = this.gcMain.GetDataRecordByNode(treeNode) as DataRowView;
|
|
dataRows[i] = dataRowView != null ? dataRowView.Row : null;
|
|
}
|
|
return dataRows;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置数据源</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-03-30 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="table">The table.</param>
|
|
/// <param name="selectRowHandler">if set to <c>true</c> [select row handler].</param>
|
|
public DataTable GetGridViewDataSource()
|
|
{
|
|
return this.gcMain.DataSource as DataTable;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:设置数据源</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-03-30 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="table">The table.</param>
|
|
/// <param name="selectRowHandler">if set to <c>true</c> [select row handler].</param>
|
|
public override void SetGridViewDataSource(DataTable table, bool selectRowHandler = true)
|
|
{
|
|
TreeListNode lastNode = this.TreeListObj.FocusedNode;
|
|
this.gcMain.DataSource = table;
|
|
if (selectRowHandler)
|
|
{
|
|
this.TreeListObj.FocusedNode = lastNode;
|
|
}
|
|
}
|
|
public override int SetGridViewDataSource(SqlDataAdapter adapter, bool selectRowHandler = true)
|
|
{
|
|
if (adapter == null) return 0;
|
|
TreeListNode lastNode = this.TreeListObj.FocusedNode;
|
|
this.AdapterObj = adapter;
|
|
DataSet dataSet = new DataSet();
|
|
adapter.Fill(dataSet, "SetGridViewDataSource");
|
|
|
|
SqlCommandBuilder cb = new SqlCommandBuilder(this.AdapterObj);
|
|
|
|
GetTreeExpanded();
|
|
this.gcMain.DataSource = dataSet.Tables[0];
|
|
|
|
//根据记录展开对应节点
|
|
foreach (TreeListNode treeListNode in treeListNodes)
|
|
{
|
|
TreeListNode treeListNode1 = this.gcMain.Nodes.TreeList.FindNodeByID(treeListNode.Id);
|
|
if (treeListNode1 != null) treeListNode1.Expanded = true;
|
|
}
|
|
|
|
if ((Expansion + "").Equals("1"))
|
|
{
|
|
this.gcMain.ExpandAll();
|
|
}
|
|
else if ((Expansion + "").Equals("2"))
|
|
{
|
|
this.gcMain.ExpandToLevel(0);
|
|
}
|
|
if (selectRowHandler)
|
|
{
|
|
this.TreeListObj.FocusedNode = lastNode;
|
|
}
|
|
return dataSet.Tables[0] != null ? dataSet.Tables[0].Rows.Count : 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 记录展开的节点
|
|
/// </summary>
|
|
public void GetTreeExpanded()
|
|
{
|
|
|
|
treeListNodes.Clear();
|
|
foreach (TreeListNode n in this.gcMain.Nodes)
|
|
{
|
|
setRecursive(n);
|
|
}
|
|
}
|
|
|
|
|
|
public void setRecursive(TreeListNode treeNode)
|
|
{
|
|
if (treeNode.Expanded) treeListNodes.Add(treeNode);
|
|
// Visit each node recursively.
|
|
foreach (TreeListNode tn in treeNode.Nodes)
|
|
{
|
|
setRecursive(tn);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:全部展开</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-08-13 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
private void OnAllExpandClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
this.gcMain.ExpandAll();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:全部合并</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-08-13 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
private void OnAllMergeClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
this.gcMain.CollapseAll();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:自动搜索框弹出时</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2019-06-10 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="PopupMenuShowingEventArgs"/> instance containing the event data.</param>
|
|
protected void OnAutoSearchEditPopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)
|
|
{
|
|
CurrentOperGridView = e.HitInfo.View;
|
|
|
|
DevExpress.XtraGrid.Menu.GridViewColumnMenu columnMenu = e.Menu as DevExpress.XtraGrid.Menu.GridViewColumnMenu;
|
|
//Model.ModuleCode+ e.HitInfo.Column.FieldName
|
|
DXMenuItem itemSaveColumn = new DXMenuItem("保存表格属性", SaveItemClick2);
|
|
DXMenuItem itemResetColumn = new DXMenuItem("重置表格属性", ResetItemClick2);
|
|
|
|
itemSaveColumn.BeginGroup = true;
|
|
itemSaveColumn.Tag = itemResetColumn.Tag = e.HitInfo.Column;
|
|
|
|
columnMenu.Items.AddRange(new DXMenuItem[] { itemSaveColumn, itemResetColumn });
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
private void gridLookUpEdit1_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
GridLookUpEdit edit = sender as GridLookUpEdit;
|
|
RepositoryItemGridLookUpEdit searchEdit = edit.Properties;
|
|
DataTable dt = (searchEdit.DataSource as DataTable);
|
|
BeginInvoke(new MethodInvoker(delegate ()
|
|
{
|
|
FilterLookup(sender, e.NewValue + "");
|
|
}));
|
|
if (string.IsNullOrWhiteSpace(edit.AutoSearchText) && e.NewValue == "")
|
|
{
|
|
DataRow newRow = dt.NewRow();
|
|
if (dt.Rows.Cast<DataRow>().FirstOrDefault(x => x == newRow) == null)
|
|
{
|
|
dt.Rows.Add(newRow.ItemArray);
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
private void FilterLookup(object sender, string NewValue)
|
|
{
|
|
try
|
|
{
|
|
GridLookUpEdit edit = sender as GridLookUpEdit;
|
|
DevExpress.XtraGrid.Views.Grid.GridView gridView = edit.Properties.View as DevExpress.XtraGrid.Views.Grid.GridView;
|
|
GridColumnModel model = edit.Properties.Tag as GridColumnModel;
|
|
DataTable table = edit.Properties.DataSource as DataTable;
|
|
FieldInfo fi = gridView.GetType().GetField("extraFilter", BindingFlags.NonPublic | BindingFlags.Instance);
|
|
List<CriteriaOperator> strList = new List<CriteriaOperator>();
|
|
foreach (DevExpress.XtraGrid.Columns.GridColumn colum in gridView.Columns)
|
|
{
|
|
string AutoSearchText = string.IsNullOrEmpty(edit.AutoSearchText) ? NewValue : edit.AutoSearchText;
|
|
BinaryOperator op1 = new BinaryOperator(colum.FieldName, "%" + AutoSearchText + "%", BinaryOperatorType.Like);
|
|
strList.Add(op1);
|
|
}
|
|
string isPopShow = edit.Tag + "";
|
|
if (isPopShow == "1") edit.ShowPopup();
|
|
string filterCondition = new GroupOperator(GroupOperatorType.Or, strList.ToArray()).ToString();
|
|
fi.SetValue(gridView, filterCondition);
|
|
MethodInfo mi = gridView.GetType().GetMethod("ApplyColumnsFilterEx", BindingFlags.NonPublic | BindingFlags.Instance);
|
|
edit.Tag = "0";
|
|
mi.Invoke(gridView, null);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 隐藏自动搜索框的过滤面板
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnCustomDrawFilterPanel(object sender, DevExpress.XtraGrid.Views.Base.CustomDrawObjectEventArgs e)
|
|
{
|
|
GridFilterPanelInfoArgs info = e.Info as DevExpress.XtraGrid.Drawing.GridFilterPanelInfoArgs;
|
|
info.ShowCloseButton = false;
|
|
info.ShowCustomizeButton = false;
|
|
info.ShowActiveButton = false;
|
|
e.Handled = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 数据源中点击将数据源更新
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void View_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
DevExpress.XtraGrid.Views.Grid.GridView gridView = sender as DevExpress.XtraGrid.Views.Grid.GridView;
|
|
DataRow rt = gridView.GetFocusedDataRow();
|
|
|
|
RepositoryItemGridLookUpEdit searchEdit = gridView.Tag as RepositoryItemGridLookUpEdit;
|
|
if (rt == null) return;
|
|
DataTable dt = (searchEdit.DataSource as DataTable);
|
|
if (dt.Rows.Cast<DataRow>().FirstOrDefault(x => x == rt) == null && dt != null && dt.Rows.Count > 0)
|
|
{
|
|
dt.Rows.Add(rt.ItemArray);
|
|
gridView.UpdateCurrentRow();
|
|
gridView.ShowEditor();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-03-15 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The source of the event.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
protected void OnPopupGridViewEnter(object sender, KeyEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
PubTreeLookUp popup = (PopupEdit.Properties.PopupControl.Tag) as PubTreeLookUp;
|
|
if (e.KeyCode == Keys.Enter)
|
|
{
|
|
GridColumnModel model = popup.model;
|
|
string ids = popup.TreeViewExObj.GetCheckValues();
|
|
if (ids != null)
|
|
{
|
|
ids = ids.Replace("'", "");
|
|
if (model.FieldType == ControlType.LabTreeLookText || model.FieldType == ControlType.LabCheckTreeLookText)
|
|
{
|
|
string[] values = ids.Trim(',').Split(',');
|
|
string text = string.Empty;
|
|
foreach (string item in values)
|
|
{
|
|
DataRow rowItem = popup.TreeViewExObj.DataSource.Rows.Cast<DataRow>().FirstOrDefault(x => x[popup.ValueMember] + "" == item);
|
|
if (rowItem != null)
|
|
{
|
|
text += rowItem[popup.TextMember] + ",";
|
|
}
|
|
}
|
|
ids = text.Trim(',');
|
|
}
|
|
PopupEdit.Properties.OwnerEdit.EditValue = ids.Trim(',');
|
|
this.Focus();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:自定义设置其弹出框宽度</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2021-03-29 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
private void OnPopupGridMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
PubTreeLookUp popup = (PopupEdit.Properties.PopupControl.Tag) as PubTreeLookUp;
|
|
if (e.Node != null && e.Node.Bounds.Contains(e.Location))
|
|
{
|
|
if (e.Node.Nodes.Count > 0 && !popup.isRootNode)
|
|
{
|
|
return;
|
|
}
|
|
PopupEdit.Properties.OwnerEdit.EditValue = (popup.model.FieldType == ControlType.LabTreeLookText || popup.model.FieldType == ControlType.LabCheckTreeLookText) ? e.Node.Text.ToString() : e.Node.Name.ToString();
|
|
this.Focus();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:自定义设置其弹出框宽度</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2021-03-29 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
private void OnQueryPopUp(object sender, CancelEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
PopupContainerEdit popupedit = (PopupContainerEdit)sender;
|
|
popupedit.Properties.PopupControl.Width = popupedit.Width;
|
|
|
|
popupedit.Properties.PopupControl.Height = (int)(popupedit.Width * 1.1);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:自定义设置其显示值</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2021-03-29 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid column.</param>
|
|
private void OnQueryDisplayText(object sender, QueryDisplayTextEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
RepositoryItemPopupContainerEdit PopupEdit = sender as RepositoryItemPopupContainerEdit;
|
|
if (PopupEdit != null)
|
|
{
|
|
PubTreeLookUp popup = (PopupEdit.PopupControl.Tag) as PubTreeLookUp;
|
|
if (e.EditValue == null) return;
|
|
string[] values = e.EditValue.ToString().Trim(',').Split(',');
|
|
string text = string.Empty;
|
|
foreach (string item in values)
|
|
{
|
|
DataRow rowItem = popup.TreeViewExObj.DataSource.Rows.Cast<DataRow>().FirstOrDefault(x => x[popup.ValueMember] + "" == item);
|
|
if (rowItem != null)
|
|
{
|
|
text += rowItem[popup.TextMember] + ",";
|
|
}
|
|
}
|
|
e.DisplayText = text.Trim(',');
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <para>说明:表格打开模块返回id</para>
|
|
/// <para>创建人:曹屹峰</para>
|
|
/// <para>创建日期:2021-08-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
protected void OnModuleChoice(object sender, ButtonPressedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
CheckedComboBoxEdit btnEdit = (CheckedComboBoxEdit)sender;
|
|
FrmModelLookUp modelLookUp = e.Button.Tag as FrmModelLookUp;
|
|
|
|
GridColumnModel model = modelLookUp.Tag as GridColumnModel;
|
|
modelLookUp.EditText = btnEdit.Text;
|
|
modelLookUp.CurrentOperColumnKey = Model.ModuleCode + "_" + model.FieldName;
|
|
if (model.FieldType == ControlType.LabMultiSelectValue || model.FieldType == ControlType.LabMultiSelectValueParam)
|
|
{
|
|
modelLookUp.EditValue = btnEdit.EditValue + "";
|
|
modelLookUp.EditText = string.Empty;
|
|
}
|
|
else
|
|
{
|
|
modelLookUp.EditText = btnEdit.Text;
|
|
modelLookUp.EditValue = string.Empty;
|
|
}
|
|
//多选关联单据头
|
|
modelLookUp.SourceSQL = model.SqlSource.Replace("#", "");
|
|
//单据头关联取值
|
|
if (this.ParentControl != null)
|
|
{
|
|
modelLookUp.SourceSQL = this.ParentControl.ReplaceControlValue(modelLookUp.SourceSQL);
|
|
}
|
|
|
|
modelLookUp.SourceSQL = ReplaceHelper.ReplaceRowParam(this.GetViewFocusedDataRow(), modelLookUp.SourceSQL);
|
|
//modelLookUp.DataSource = BaseImpl.GetDataTableResult(modelLookUp.SourceSQL);
|
|
modelLookUp.InitControls(modelLookUp.UnionModuleCodel);
|
|
DialogResult result = modelLookUp.ShowDialog();
|
|
if (result == DialogResult.OK)
|
|
{
|
|
btnEdit.EditValue = modelLookUp.EditValue;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:表格打开模块返回数据源行</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-4 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
protected void OnModuleRowsChoice(object sender, ButtonPressedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
ButtonEdit btnEdit = (ButtonEdit)sender;
|
|
FrmRowsModelLookUp modelLookUp = e.Button.Tag as FrmRowsModelLookUp;
|
|
|
|
GridColumnModel model = modelLookUp.Tag as GridColumnModel;
|
|
modelLookUp.EditText = btnEdit.Text;
|
|
modelLookUp.CurrentOperColumnKey = Model.ModuleCode + "_" + model.FieldName;
|
|
if (model.FieldType == ControlType.LabMultiSelectValue || model.FieldType == ControlType.LabMultiSelectValueParam)
|
|
{
|
|
modelLookUp.EditValue = btnEdit.EditValue + "";
|
|
modelLookUp.EditText = string.Empty;
|
|
}
|
|
else
|
|
{
|
|
modelLookUp.EditText = btnEdit.Text;
|
|
modelLookUp.EditValue = string.Empty;
|
|
}
|
|
////多选关联单据头
|
|
//modelLookUp.SourceSQL = model.SqlSource.Replace("#", "");
|
|
////单据头关联取值
|
|
//if (this.ParentControl != null)
|
|
//{
|
|
// modelLookUp.SourceSQL = this.ParentControl.ReplaceControlValue(modelLookUp.SourceSQL);
|
|
//}
|
|
|
|
//modelLookUp.SourceSQL = ReplaceHelper.ReplaceRowParam(this.gridView.GetFocusedDataRow(), modelLookUp.SourceSQL);
|
|
//modelLookUp.DataSource = BaseImpl.GetDataTableResult(modelLookUp.SourceSQL);
|
|
string sourceSql = string.Empty;
|
|
if (!string.IsNullOrEmpty(model.SqlSource))
|
|
{
|
|
sourceSql = model.SqlSource;
|
|
}
|
|
else
|
|
{
|
|
DataRow modelRow = MainImpl.GetSystemdllTab(model.addModuleld);//获取单个模块信息
|
|
if (modelRow == null)
|
|
{
|
|
MessageUtil.Show("模块编号[" + model.addModuleld + "],配置错误!\r\n该模块信息未找到!");
|
|
return;
|
|
}
|
|
ModuleModel moduleModel = new ModuleModel(modelRow);// 系统模块实体对象
|
|
sourceSql = moduleModel.MenuSql;
|
|
}
|
|
|
|
//多选关联单据头
|
|
modelLookUp.SourceSQL = sourceSql.Replace("#", "");
|
|
//单据头关联取值
|
|
if (this.ParentControl != null)
|
|
{
|
|
modelLookUp.SourceSQL = this.ParentControl.ReplaceControlValue(modelLookUp.SourceSQL);
|
|
}
|
|
|
|
modelLookUp.SourceSQL = ReplaceHelper.ReplaceRowParam(this.GetViewFocusedDataRow(), modelLookUp.SourceSQL);
|
|
//modelLookUp.DataSource = BaseImpl.GetDataTableResult(modelLookUp.SourceSQL);
|
|
|
|
modelLookUp.InitControls();
|
|
DialogResult result = modelLookUp.ShowDialog();
|
|
modelLookUp.DataSource = null;
|
|
if (result == DialogResult.OK)
|
|
{
|
|
//btnEdit.EditValue = modelLookUp.EditValue;
|
|
DataRow returnRow = modelLookUp.selectRowsEditValue;
|
|
DataRow dataRow = this.GetViewFocusedDataRow();
|
|
if (!string.IsNullOrEmpty(model.SqlSource))
|
|
{
|
|
foreach (DevExpress.XtraGrid.Columns.GridColumn gridColumn in this.gcMain.Columns)
|
|
{
|
|
GridColumnModel colModel = gridColumn.Tag as GridColumnModel;
|
|
if (!string.IsNullOrEmpty(colModel.unionCompare) && colModel.unionCompare.Trim().Split('^').Length == 2)
|
|
{
|
|
string[] fields = colModel.unionCompare.Trim().Split('^');
|
|
string inField = fields[0];
|
|
string outField = fields[1];
|
|
if (returnRow.Table.Columns.Contains(inField))
|
|
{
|
|
dataRow[outField] = returnRow[inField] + "";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//btnEdit.EditValue = modelLookUp.EditValue;
|
|
foreach (DataColumn col in returnRow.Table.Columns)
|
|
{
|
|
if (dataRow.Table.Columns.Contains(col.ColumnName))
|
|
{
|
|
dataRow[col.ColumnName] = returnRow[col.ColumnName] + "";
|
|
}
|
|
}
|
|
}
|
|
SendKeys.Send("{Esc}");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex, Model.ModuleCode);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:重写表格选中事件.</para>
|
|
/// <para>创建人:王一帆</para>
|
|
/// <para>创建日期:2020-10-30 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The source of the event.</param>
|
|
/// <param name="e">The <see cref="DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs"/> instance containing the event data.</param>
|
|
private void OnCustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e)
|
|
{
|
|
if (e.Node == this.gcMain.FocusedNode)
|
|
e.Appearance.BackColor = ColorTranslator.FromHtml("#9feb6a");
|
|
}
|
|
/// <summary>
|
|
/// 粘贴功能
|
|
/// </summary>
|
|
/// <param name="e"></param>
|
|
/// <param name="_objData"></param>
|
|
private void NewPasteMethod(KeyEventArgs e, object _objData)
|
|
{
|
|
if (_objData != null)
|
|
{
|
|
string _tempStr = _objData.ToString();
|
|
_tempStr = Regex.Replace(_tempStr, "\"[^\"]*(?:\"\"[^\"]*)*\"", m => m.Value.Replace("\r\n", "{lskj}").Replace("\"", ""));
|
|
|
|
int _rowNumber = 1;
|
|
int _pasteRowCount = 1;
|
|
string[] _split = { "\r\n" };
|
|
string[] _arrayRowStr = _tempStr.Split(_split, StringSplitOptions.None);
|
|
if (_arrayRowStr.Length < 1)
|
|
return;
|
|
TreeListColumn focColumn = this.gcMain.FocusedColumn;
|
|
focColumn = focColumn == null ? this.gcMain.Columns[0] : focColumn;
|
|
if (focColumn != null)
|
|
{
|
|
DataTable table = this.GetGridViewDataSource();
|
|
int beforeNumber = table.Rows.Count;
|
|
_rowNumber = this.gcMain.GetVisibleIndexByNode(this.gcMain.FocusedNode);
|
|
if (_rowNumber < 0)
|
|
{
|
|
_rowNumber = 0;
|
|
}
|
|
if (_arrayRowStr.Length != this.gcMain.Selection.Count)
|
|
{
|
|
//选择区域与粘贴行数不匹配
|
|
}
|
|
_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;
|
|
DataRow newRow = null;
|
|
if (_rowNumber + 1 > table.Rows.Count)
|
|
{
|
|
newRow = table.NewRow();
|
|
//table.Rows.Add(newRow);
|
|
TreeListColumnCollection gridColumns = this.gcMain.Columns;
|
|
this.gcMain.FocusedNode = this.gcMain.GetNodeByVisibleIndex(_rowNumber);
|
|
foreach (TreeListColumn col in gridColumns)
|
|
{
|
|
GridColumnModel model = col.Tag as GridColumnModel;
|
|
string fieldValue = BaseImpl.GetDefaultValue(model.DefaultValue);
|
|
|
|
if (model.DefaultValue != null && model.DefaultValue.Contains("{#") && this.ParentControl != null)
|
|
{
|
|
fieldValue = this.ParentControl.ReplaceParentControlValue(model.DefaultValue);
|
|
if (!string.IsNullOrEmpty(fieldValue))
|
|
{
|
|
newRow[col.FieldName] = fieldValue;
|
|
}
|
|
}
|
|
else if (!string.IsNullOrEmpty(model.DefaultValue) && !model.DefaultValue.Contains("{ROW_"))
|
|
{
|
|
newRow[col.FieldName] = fieldValue;
|
|
}
|
|
}
|
|
}
|
|
this.gcMain.FocusedNode = this.gcMain.GetNodeByVisibleIndex(_rowNumber);
|
|
if (_arrayStr2.Length == 0)
|
|
_arrayStr2[0] = _arrayRowStr[i];
|
|
int _colNumber = beforeNumber == 0 ? 0 : focColumn.VisibleIndex;
|
|
|
|
for (int j = 0; j < _arrayStr2.Length; j++)//j = _colNumber
|
|
{
|
|
TreeListColumn col = this.gcMain.VisibleColumns[_colNumber];
|
|
|
|
GridColumnModel model = col.Tag as GridColumnModel;
|
|
if (model != null && (model.CanCopy || ((this.gcMain.OptionsBehavior.Editable) && (this.gcMain.VisibleColumns[_colNumber].OptionsColumn.AllowEdit))))
|
|
{
|
|
// 返回ID类型特殊处理
|
|
string cellValue = _arrayStr2[j];
|
|
if (!string.IsNullOrEmpty(cellValue)) cellValue = cellValue.Replace("{lskj}", "\n");
|
|
|
|
bool IsTextEqualValue = false;
|
|
object value = model != null && ControlType.IsValue(model.FieldType) ? GetValueByCaption(model, col.ColumnEdit, cellValue, out IsTextEqualValue) : cellValue;
|
|
value = model != null && model.FieldType == 14 ? ReplaceMultiSpace(value) : value;
|
|
DateTime dateValue = new DateTime();
|
|
|
|
// 避免下拉框值替换失败提示错误
|
|
if (model != null && !IsTextEqualValue && ((ControlType.IsValue(model.FieldType) && cellValue == value + "") ||
|
|
(ControlType.LabTextInt == model.FieldType && (value + "").IsChinese()) ||
|
|
(ControlType.IsDate(model.FieldType) && !DateTime.TryParse(value + "", out dateValue))))
|
|
{
|
|
_colNumber += 1;
|
|
continue;
|
|
}
|
|
|
|
if (newRow == null)
|
|
{
|
|
DataRow dataRow = this.GetViewFocusedDataRow();
|
|
dataRow[this.gcMain.FocusedColumn.FieldName] = value;
|
|
}
|
|
else
|
|
{
|
|
if (string.IsNullOrEmpty(value + ""))
|
|
{
|
|
if (string.IsNullOrWhiteSpace(newRow[col.FieldName] + ""))
|
|
{
|
|
if (col.ColumnType.Name.ToLower() == "string")
|
|
newRow[col.FieldName] = "";
|
|
if (col.ColumnType.Name.ToLower().IndexOf("char") >= 0)
|
|
newRow[col.FieldName] = "";
|
|
if (col.ColumnType.Name.ToLower().IndexOf("int") >= 0)
|
|
newRow[col.FieldName] = 0;
|
|
if (col.ColumnType.Name.ToLower() == "decimal")
|
|
newRow[col.FieldName] = 0;
|
|
//if (dc.DataType.Name.ToLower().IndexOf("date") >= 0)
|
|
// tmpRow[dc] = DateTime.Now;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
newRow[col.FieldName] = value;
|
|
}
|
|
|
|
}
|
|
//gridView.SetRowCellValue(_rowNumber, col, value);
|
|
}
|
|
_colNumber += 1;
|
|
}
|
|
_rowNumber += 1;
|
|
if (newRow != null)
|
|
{
|
|
// 其它处理(如绑定左侧树结构数据)
|
|
//if (OnParseGridDataCallBack != null) this.OnParseGridDataCallBack(newRow);
|
|
for (int j = 0; j < this.gcMain.Columns.Count; j++)
|
|
{
|
|
if (this.gcMain.Columns[j].Tag == null) continue;
|
|
if ((this.gcMain.Columns[j].Tag as GridColumnModel).LimitLength > 0)
|
|
{
|
|
int MaxInputLength = System.Text.Encoding.Default.GetBytes(newRow[this.gcMain.Columns[j].FieldName].ToString()).Length;
|
|
if (MaxInputLength > (this.gcMain.Columns[j].Tag as GridColumnModel).LimitLength)
|
|
{
|
|
newRow.SetColumnError(newRow.Table.Columns[this.gcMain.Columns[j].FieldName], "当前输入文本超过设定长度!");//不满足条件设置错误信息
|
|
}
|
|
}
|
|
}
|
|
table.Rows.Add(newRow);
|
|
//this.gridView.FocusedRowHandle = _rowNumber - 1;
|
|
}
|
|
else
|
|
{
|
|
//this.gcMain.UpdateCurrentRow();
|
|
}
|
|
}
|
|
this.gcMain.ShowEditor();
|
|
e.Handled = true;
|
|
//SendKeys.Send("{Esc}");
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 去除多选框中的空格
|
|
/// </summary>
|
|
private object ReplaceMultiSpace(object text)
|
|
{
|
|
if (string.IsNullOrEmpty(text + ""))
|
|
{
|
|
return text;
|
|
}
|
|
string[] keyValues = (text + "").Split(',');
|
|
string returnText = "";
|
|
foreach (string keyValue in keyValues)
|
|
{
|
|
string newKeyValue = keyValue.Trim();
|
|
returnText += string.Format("{0},", newKeyValue);
|
|
}
|
|
returnText = returnText.TrimEnd(',');
|
|
return returnText + ",";
|
|
}
|
|
}
|
|
} |