2164 lines
103 KiB
C#
2164 lines
103 KiB
C#
using DevExpress.Utils;
|
|
using DevExpress.XtraBars;
|
|
using DevExpress.XtraCharts;
|
|
using DevExpress.XtraGrid;
|
|
using DevExpress.XtraGrid.Columns;
|
|
using Lskj.Business;
|
|
using Lskj.Business.Impl;
|
|
using Lskj.Core;
|
|
using Lskj.Model;
|
|
using Lskj.Util;
|
|
using Lskj.Control.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows.Forms;
|
|
using Lskj.Control.SiftColControl;
|
|
using DevExpress.XtraEditors.Controls;
|
|
using Lskj.Control.Properties;
|
|
using DevExpress.XtraGrid.Views.Grid;
|
|
using Microsoft.CSharp;
|
|
using Lskj.Data;
|
|
using System.IO;
|
|
using DevExpress.XtraGrid.Views.BandedGrid;
|
|
using DevExpress.XtraPrintingLinks;
|
|
using DevExpress.XtraTab;
|
|
|
|
namespace Lskj.Control
|
|
{
|
|
public partial class FrmGridSift : BaseForm
|
|
{
|
|
public FrmGridSift()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
#region 变量
|
|
private List<DragItem> DragItemList = new List<DragItem>();
|
|
/// <summary>
|
|
/// 单个按钮右键菜单
|
|
/// </summary>
|
|
private DevExpress.XtraBars.PopupMenu popupMenu;
|
|
/// <summary>
|
|
/// 统计面板右键菜单
|
|
/// </summary>
|
|
private DevExpress.XtraBars.PopupMenu allpopupMenu;
|
|
/// <summary>
|
|
/// 图表控件
|
|
/// </summary>
|
|
private ChartControlEx chart;
|
|
/// <summary>
|
|
/// 右键菜单产生的控件
|
|
/// </summary>
|
|
private Lskj.Control.SiftColControl.DragItem rightClickItem;
|
|
/// <summary>
|
|
/// 所有列名
|
|
/// </summary>
|
|
private List<string> colName = null;
|
|
/// <summary>
|
|
/// 展示数据源
|
|
/// </summary>
|
|
private DataTable source = new DataTable();
|
|
/// <summary>
|
|
/// 方案字典
|
|
/// </summary>
|
|
private Dictionary<string, int> projectDic = new Dictionary<string, int>();
|
|
/// <summary>
|
|
/// 分组结果
|
|
/// </summary>
|
|
private IEnumerable<IGrouping<string, DataRow>> groupResultLists;
|
|
/// <summary>
|
|
/// 主表初始显示列
|
|
/// </summary>
|
|
private List<GridColumn> gcMainColumns;
|
|
/// <summary>
|
|
/// 当前方案对象
|
|
/// </summary>
|
|
public GridSiftProjectModel ProjectModel = new GridSiftProjectModel();
|
|
/// <summary>
|
|
/// 模块Key值
|
|
/// </summary>
|
|
public string CustomColumKey;
|
|
/// <summary>
|
|
/// 外部表格对象
|
|
/// </summary>
|
|
public GridControlEx ParentGridEx;
|
|
#endregion
|
|
#region 事件
|
|
#region 窗体加载时
|
|
/// <summary>
|
|
/// <para>说明:窗体加载时</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 OnLoad(object sender, EventArgs e)
|
|
{
|
|
WaitForm.ShowForm();
|
|
try
|
|
{
|
|
this.source = this.ParentGridEx.GridView.GetGridViewFilteredAndSortedDataToDataTable().Copy();
|
|
InitEvent();
|
|
InitSpliterPosition();//初始化分割条位置
|
|
InitMainSpliterPosition();
|
|
InitExportDrop();
|
|
InitCheckProject();
|
|
InitLeftGrid();
|
|
InitChart();
|
|
InitResultRightMenu();
|
|
InitShowDataGrid();
|
|
InitDetailGrid();
|
|
InitProjectSelect();
|
|
this.checkRowSum.CheckState = CheckState.Checked;
|
|
this.checkColSum.Enabled = false;
|
|
this.splitContainerControl.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Both;
|
|
this.pl_GroupByCol.AllowDrop = true;
|
|
this.pl_groupByRow.AllowDrop = true;
|
|
this.pl_Result.AllowDrop = true;
|
|
//int top = 0; int left = 2;
|
|
//foreach (DataColumn col in source.Columns)//加载所有列显示
|
|
//{
|
|
// DragItemModel dragItemModel = new DragItemModel();
|
|
// dragItemModel.name = col.ColumnName;
|
|
// dragItemModel.caption = col.Caption;
|
|
// Lskj.Control.SiftColControl.DragItem.MouseDownEventHanlder mouseDownEventHanlder = null;
|
|
// Lskj.Control.SiftColControl.DragItem dragItem = new Lskj.Control.SiftColControl.DragItem(dragItemModel);
|
|
// mouseDownEventHanlder += new Lskj.Control.SiftColControl.DragItem.MouseDownEventHanlder(startDrag);
|
|
// dragItem.setMouseDownEvent(mouseDownEventHanlder);
|
|
// dragItem.ItemBtn.Visible = false;//隐藏主界面关闭按钮
|
|
// dragItem.Tag = col;
|
|
// //dragItem.FieldColName = col.ColumnName;
|
|
// dragItem.ItemLable.Text = col.Caption;
|
|
// dragItem.ItemLable.Tag = col.Caption;
|
|
// dragItem.Width = dragItem.ItemLable.Width + 10 + dragItem.ItemBtn.Height;
|
|
// dragItem.ItemBtn.Width = dragItem.ItemBtn.Height;
|
|
// dragItem.Parent = this.pl_AllColumns;
|
|
// this.DragItemList.Add(dragItem);
|
|
// if (left + dragItem.Width > pl_AllColumns.Width)
|
|
// {
|
|
// top += dragItem.Height + 2; left = 2;
|
|
// dragItem.Location = new Point(left, top);
|
|
// left += dragItem.Width + 2;
|
|
// }
|
|
// else
|
|
// {
|
|
// dragItem.Location = new Point(left, top);
|
|
// left += dragItem.Width + 2;
|
|
// }
|
|
//}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
WaitForm.HideForm();
|
|
}
|
|
#endregion
|
|
#region 控件拖拽完成事件
|
|
/// <summary>
|
|
/// <para>说明:控件拖拽完成事件</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 OnDragDrop(object sender, DragEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
DevExpress.XtraEditors.PanelControl panelContol = (DevExpress.XtraEditors.PanelControl)sender;
|
|
if (panelContol != this.pl_Result)
|
|
{
|
|
List<string> colName = new List<string>();
|
|
foreach (Lskj.Control.SiftColControl.DragItem Item in panelContol.Controls)
|
|
{
|
|
colName.Add(Item.dragItemModel.name);
|
|
}
|
|
object item = e.Data.GetData(typeof(DataRow[]));
|
|
DataRow[] rows = (DataRow[])item;
|
|
foreach (DataRow row in rows)
|
|
{
|
|
if (colName.Contains(row["sysName"] + ""))
|
|
{
|
|
MessageUtil.Show(string.Format("字段:{0}已存在!", row["userName"] + ""));
|
|
}
|
|
else
|
|
{
|
|
Lskj.Control.SiftColControl.DragItem.btn_ClickEventHanlder btn_ClickEventHanlder = null;
|
|
DataColumn col = this.source.Columns.Contains(row["sysName"] + "") ? this.source.Columns[row["sysName"] + ""] : null;
|
|
col.Caption = row["userName"] + "";
|
|
DragItemModel dragItemModel = new DragItemModel();
|
|
dragItemModel.name = col.ColumnName;
|
|
dragItemModel.caption = col.Caption;
|
|
Lskj.Control.SiftColControl.DragItem dragItem = new Lskj.Control.SiftColControl.DragItem(dragItemModel);
|
|
btn_ClickEventHanlder += new Lskj.Control.SiftColControl.DragItem.btn_ClickEventHanlder(deleteItem);
|
|
dragItem.setClickEvent(btn_ClickEventHanlder);
|
|
//dragItem.FieldColName = column.ColumnName;
|
|
dragItem.ItemLable.Text = col.Caption;
|
|
dragItem.ItemLable.Tag = col.Caption;
|
|
dragItem.Tag = col;
|
|
dragItem.Width = dragItem.ItemLable.Width + 10 + dragItem.ItemBtn.Height;
|
|
dragItem.ItemBtn.Width = dragItem.ItemBtn.Height;
|
|
dragItem.Parent = panelContol;
|
|
dragItem.Location = new Point(2, 0);
|
|
}
|
|
}
|
|
//if (this.pl_GroupByCol.Controls.Count != 0 && this.pl_Result.Controls.Count > 1)
|
|
//{
|
|
// Lskj.Control.SiftColControl.DragItem dragItem = this.pl_Result.Controls[0] as Lskj.Control.SiftColControl.DragItem;
|
|
// this.pl_Result.Controls.Clear();
|
|
// this.pl_Result.Controls.Add(dragItem);
|
|
//}
|
|
RedRawDragItem(panelContol);
|
|
}
|
|
else
|
|
{
|
|
object item = e.Data.GetData(typeof(DataRow[]));
|
|
DataRow[] rows = (DataRow[])item;
|
|
foreach (DataRow row in rows)
|
|
{
|
|
Lskj.Control.SiftColControl.DragItem.btn_ClickEventHanlder btn_ClickEventHanlder = null;
|
|
Lskj.Control.SiftColControl.DragItem.MouseUpEventHanlder mouseUpEventHanlder = null;
|
|
DataColumn col = this.source.Columns.Contains(row["sysName"] + "") ? this.source.Columns[row["sysName"] + ""] : null;
|
|
col.Caption = row["userName"] + "";
|
|
DragItemModel dragItemModel = new DragItemModel();
|
|
dragItemModel.name = col.ColumnName;
|
|
dragItemModel.caption = col.Caption;
|
|
Lskj.Control.SiftColControl.DragItem dragItem = new Lskj.Control.SiftColControl.DragItem(dragItemModel);
|
|
btn_ClickEventHanlder += new Lskj.Control.SiftColControl.DragItem.btn_ClickEventHanlder(deleteItem);//注册关闭事件
|
|
mouseUpEventHanlder += new Lskj.Control.SiftColControl.DragItem.MouseUpEventHanlder(showPopupMenu);//注册右击菜单事件
|
|
dragItem.setClickEvent(btn_ClickEventHanlder);
|
|
dragItem.setMouseUpEvent(mouseUpEventHanlder);
|
|
//dragItem.FieldColName = column.ColumnName;
|
|
dragItem.ItemLable.Text = col.Caption;
|
|
dragItem.ItemLable.Tag = col.Caption;
|
|
dragItem.Tag = col;
|
|
dragItem.Width = dragItem.ItemLable.Width + 10 + dragItem.ItemBtn.Height;
|
|
dragItem.ItemBtn.Width = dragItem.ItemBtn.Height;
|
|
dragItem.Parent = panelContol;
|
|
RedRawDragItem(panelContol);
|
|
}
|
|
}
|
|
//updateGridViewData();//数据显示更新
|
|
updateGridViewDataDynamic();
|
|
//this.gcMain.GridView.BestFitColumns();
|
|
this.leftGridView.ClearSelection();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
}
|
|
#region 拖入控件边界
|
|
/// <summary>
|
|
/// 拖入控件边界
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void OnDragEnter(object sender, DragEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (e.Data.GetDataPresent(typeof(DataRow[])))
|
|
e.Effect = DragDropEffects.Copy;
|
|
else
|
|
e.Effect = DragDropEffects.None;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
#endregion
|
|
#region 单个按钮右键菜单点击事件
|
|
/// <summary>
|
|
/// <para>说明:单个按钮右键菜单点击事件</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 OnItem_ItemClick(object sender, ItemClickEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
rightClickItem.ItemLable.Text = (rightClickItem.ItemLable.Tag + string.Format("({0})", e.Item.Caption)).Replace("\r\n", "");
|
|
rightClickItem.dragItemModel.oper = e.Item.Name;
|
|
rightClickItem.Width = rightClickItem.ItemLable.Width + 10 + rightClickItem.ItemBtn.Height;
|
|
RedRawDragItem(this.pl_Result);
|
|
AlterRepeatItem(this.pl_Result, rightClickItem);
|
|
//updateGridViewData();
|
|
updateGridViewDataDynamic();
|
|
//this.gcMain.GridView.BestFitColumns();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
#region 统计面板右键菜单点击事件
|
|
/// <summary>
|
|
/// <para>说明:统计面板右键菜单点击事件</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 OnAllItem_ItemClick(object sender, ItemClickEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
|
|
foreach (DragItem dragItem in this.pl_Result.Controls)
|
|
{
|
|
this.rightClickItem = dragItem;
|
|
BarItemLink operItemLink = this.popupMenu.ItemLinks.Where(n => n.Item.Name.Equals(e.Item.Name)).FirstOrDefault();
|
|
ItemClickEventArgs itemClickEventArgs = new ItemClickEventArgs(operItemLink.Item, operItemLink);
|
|
OnItem_ItemClick(null, itemClickEventArgs);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string Message = ErrorMessage.PromptErrorMessage(ex);
|
|
MessageUtil.Show(Message, ex.Message);
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
#region 点击重置按钮事件
|
|
/// <summary>
|
|
/// <para>说明:点击清除按钮事件</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>
|
|
void OnBtnClear_Click(object sender, EventArgs e)
|
|
{
|
|
this.pl_GroupByCol.Controls.Clear();
|
|
this.pl_groupByRow.Controls.Clear();
|
|
this.pl_Result.Controls.Clear();
|
|
for (int i = 0; i < this.DetailTabControl.TabPages.Count; i++)
|
|
{
|
|
XtraTabPage xtraTabPage = this.DetailTabControl.TabPages[i];
|
|
if (xtraTabPage.Controls[0] is BandedGridControlEx)
|
|
{
|
|
(this.DetailTabControl.TabPages[i].Controls[0] as BandedGridControlEx).GridControl.DataSource = this.source.Clone();
|
|
}
|
|
else if (xtraTabPage.Controls[0] is GridControlEx)
|
|
{
|
|
(this.DetailTabControl.TabPages[i].Controls[0] as GridControlEx).GridControl.DataSource = this.source.Clone();
|
|
}
|
|
else
|
|
{
|
|
(this.DetailTabControl.TabPages[i].Controls[0] as ChartControlEx).cmMain.Series.Clear();
|
|
}
|
|
}
|
|
//updateGridViewData();
|
|
updateGridViewDataDynamic();
|
|
}
|
|
#endregion
|
|
#region 点击显示图表
|
|
/// <summary>
|
|
/// <para>说明:点击显示图表</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 OncheckShowChart_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
DevExpress.XtraEditors.CheckEdit checkEdit = (DevExpress.XtraEditors.CheckEdit)sender;
|
|
if (checkEdit.CheckState == CheckState.Checked)
|
|
{
|
|
this.splitContainerControl.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Both;
|
|
}
|
|
if (checkEdit.CheckState == CheckState.Unchecked)
|
|
{
|
|
this.splitContainerControl.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1;
|
|
}
|
|
}
|
|
#endregion
|
|
#region 点击显示行合计
|
|
/// <summary>
|
|
/// <para>说明:点击显示行合计</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 OncheckRowSum_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
DevExpress.XtraEditors.CheckEdit checkEdit = (DevExpress.XtraEditors.CheckEdit)sender;
|
|
if (checkEdit.CheckState == CheckState.Checked)
|
|
{
|
|
this.gcMain.GridView.OptionsView.ShowFooter = true;
|
|
}
|
|
if (checkEdit.CheckState == CheckState.Unchecked)
|
|
{
|
|
this.gcMain.GridView.OptionsView.ShowFooter = false;
|
|
}
|
|
}
|
|
#endregion
|
|
#region 分隔条位置改变时
|
|
/// <summary>
|
|
/// <para>说明:获取验证返回操作参数</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-03-01 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
private void OnSplitContainerControl_SplitterPositionChanged(object sender, EventArgs e)
|
|
{
|
|
IniHelper.Write(string.Format("Step_spliterPositionMain_{0}", "FrmGridSift"), this.splitContainerControl.SplitterPosition + "");
|
|
}
|
|
private void OnSplitMainContainerControl_SplitterPositionChanged(object sender, EventArgs e)
|
|
{
|
|
IniHelper.Write(string.Format("Step_spliterMainPositionMain_{0}", "FrmGridSift"), this.splitMainContainerControl.SplitterPosition + "");
|
|
}
|
|
#endregion
|
|
#region 导出明细Excel事件
|
|
/// <summary>
|
|
/// <para>说明:导出明细Excel事件</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-02</para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// </summary>
|
|
private void OnItemExportDetail_ItemClick(object sender, ItemClickEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
XtraTabPage xtraTabPage = this.DetailTabControl.SelectedTabPage;
|
|
if (xtraTabPage.Text.Equals("明细表"))
|
|
{
|
|
if (xtraTabPage.Controls[0] is BandedGridControlEx)
|
|
{
|
|
(xtraTabPage.Controls[0] as BandedGridControlEx).GridControl.ToExcel(this.checkProject.EditValue + "" + "-" + xtraTabPage.Text);
|
|
}
|
|
else
|
|
{
|
|
(xtraTabPage.Controls[0] as GridControlEx).GridControl.ToExcel(this.checkProject.EditValue + "" + "-" + xtraTabPage.Text);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SaveFileDialog dialog = new SaveFileDialog();
|
|
dialog.Title = "导出";
|
|
dialog.FileName = this.checkProject.EditValue + "" + "-" + xtraTabPage.Text + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx";
|
|
dialog.Filter = SystemInfo.Instance.IsXlsxFirst ? "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls|PDF文件|*.PDF|RTF文件|*.RTF|HTML文件|*.html" :
|
|
"Excel文件(*.xls)|*.xls|Excel文件(*.xlsx)|*.xlsx|PDF文件|*.PDF|RTF文件|*.RTF|HTML文件|*.html";
|
|
DialogResult result = dialog.ShowDialog();
|
|
if (result == DialogResult.OK)
|
|
{
|
|
WaitForm.ShowForm("导出中,请稍后...");
|
|
(xtraTabPage.Controls[0] as ChartControlEx).ChartControlObj.ExportToXlsx(dialog.FileName);
|
|
WaitForm.HideForm();
|
|
MessageUtil.Show(ResourceKeys.ExportSuccess);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 导出主表Excel事件
|
|
/// <summary>
|
|
/// <para>说明:导出Excel事件</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-02</para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// </summary>
|
|
private void OnItemExportExcel_ItemClick(object sender, ItemClickEventArgs e)
|
|
{
|
|
this.gcMain.GridControl.ToExcel(this.checkProject.EditValue + "" + "-主表");
|
|
}
|
|
#endregion
|
|
#region 方案选择切换事件
|
|
private void OnCheckProject_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
WaitForm.ShowForm();
|
|
try
|
|
{
|
|
if (this.checkProject.SelectedIndex == 0)
|
|
{
|
|
GridSiftProjectModel gridSiftProjectModel = new GridSiftProjectModel();
|
|
this.ProjectModel = gridSiftProjectModel;
|
|
LoadProject(this.ProjectModel);
|
|
}
|
|
else
|
|
{
|
|
string sqlStr = "select id from p_SysModuleSchemeTab where moduleId = '{0}' and name = '{1}'";
|
|
string primarykey = SqlHelper.ExecuteScalar(string.Format(sqlStr, CustomColumKey, this.checkProject.EditValue)) + "";
|
|
this.ProjectModel = new GridSiftProjectModel(primarykey);
|
|
//重新加载方案
|
|
LoadProject(this.ProjectModel);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
WaitForm.HideForm();
|
|
}
|
|
#endregion
|
|
#region 方案保存事件
|
|
private void saveBtn_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (this.checkProject.SelectedIndex == 0)//当前为默认方案,则新建方案
|
|
{
|
|
FrmGridSiftProjectAdd frmGridSiftProjectAdd = new FrmGridSiftProjectAdd(CustomColumKey, ERPInfo.Instance.UserId);
|
|
if (frmGridSiftProjectAdd.ShowDialog() == DialogResult.OK)
|
|
{
|
|
GridSiftProjectModel projectModel = GridSiftProjectModel.Add(frmGridSiftProjectAdd.ProjectName, CustomColumKey, Convert.ToInt32(ERPInfo.Instance.UserId), frmGridSiftProjectAdd.IsPub);
|
|
projectModel.Groups = GetGroupRowList();
|
|
projectModel.Cols = GetGroupColList();
|
|
projectModel.Targets = GetTargetModelList();
|
|
projectModel.Save();
|
|
this.ProjectModel = projectModel;
|
|
MessageUtil.Show(string.Format("方案:{0}新增成功!", projectModel.Name));
|
|
}
|
|
frmGridSiftProjectAdd.Dispose();
|
|
}
|
|
else//否则保存当前方案
|
|
{
|
|
this.ProjectModel.Groups = GetGroupRowList();
|
|
this.ProjectModel.Cols = GetGroupColList();
|
|
this.ProjectModel.Targets = GetTargetModelList();
|
|
this.ProjectModel.Save();
|
|
MessageUtil.Show(string.Format("方案:{0}保存成功!", this.ProjectModel.Name));
|
|
}
|
|
InitCheckProject();//重新加载方案列表
|
|
this.checkProject.SelectedIndex = this.projectDic.ContainsKey(this.ProjectModel.Name + "") ? this.projectDic[this.ProjectModel.Name + ""] : 0;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 方案另存事件
|
|
private void saveAsBtn_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
FrmGridSiftProjectAdd frmGridSiftProjectAdd = new FrmGridSiftProjectAdd(CustomColumKey, ERPInfo.Instance.UserId);
|
|
if (frmGridSiftProjectAdd.ShowDialog() == DialogResult.OK)
|
|
{
|
|
GridSiftProjectModel projectModel = GridSiftProjectModel.Add(frmGridSiftProjectAdd.ProjectName, CustomColumKey, Convert.ToInt32(ERPInfo.Instance.UserId), frmGridSiftProjectAdd.IsPub);
|
|
projectModel.Groups = GetGroupRowList();
|
|
projectModel.Cols = GetGroupColList();
|
|
projectModel.Targets = GetTargetModelList();
|
|
projectModel.Save();
|
|
this.ProjectModel = projectModel;
|
|
MessageUtil.Show(string.Format("方案:{0}新增成功!", projectModel.Name));
|
|
}
|
|
frmGridSiftProjectAdd.Dispose();
|
|
InitCheckProject();//重新加载方案列表
|
|
this.checkProject.SelectedIndex = this.projectDic.ContainsKey(this.ProjectModel.Name + "") ? this.projectDic[this.ProjectModel.Name + ""] : 0;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 方案删除事件
|
|
private void deleteBtn_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (MessageUtil.Show("是否删除当前方案?") == DialogResult.OK)
|
|
{
|
|
if (this.checkProject.SelectedIndex == 0)
|
|
{
|
|
MessageUtil.Show("默认方案无法删除!");
|
|
}
|
|
else
|
|
{
|
|
this.ProjectModel.Delete();
|
|
MessageUtil.Show(string.Format("方案:{0}删除成功!", this.ProjectModel.Name));
|
|
InitCheckProject();//重新加载方案列表
|
|
this.checkProject.SelectedIndex = 0;//选中默认方案
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 显示统计面板菜单
|
|
private void OnPl_Result_MouseUp(object sender, MouseEventArgs e)
|
|
{
|
|
if (e.Button == MouseButtons.Right)
|
|
{
|
|
allpopupMenu.ShowPopup(System.Windows.Forms.Control.MousePosition);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 双击选中行
|
|
private void OnLeftGridView_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
GridView gridView = (GridView)sender;
|
|
int index = gridView.FocusedRowHandle;
|
|
int[] selectIndexs = gridView.GetSelectedRows();
|
|
if (!selectIndexs.Contains(index))
|
|
{
|
|
gridView.SelectRow(index);
|
|
}
|
|
else
|
|
{
|
|
gridView.UnselectRow(index);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 双击主表刷新明细
|
|
private void OnGridView_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
List<DataRow> detailRows = new List<DataRow>();
|
|
DataRow focusedRow = this.gcMain.GridView.GetFocusedDataRow();
|
|
if (this.groupResultLists == null)
|
|
{
|
|
detailRows.Add(focusedRow);
|
|
}
|
|
else
|
|
{
|
|
string selectStr = "";
|
|
List<string> groupRows = GetGroupRowList();
|
|
foreach (string groupRow in groupRows)
|
|
{
|
|
selectStr += string.Format("{0}='{1}' and ", groupRow, (focusedRow[groupRow] + "").Replace("'", "''"));
|
|
}
|
|
if (!string.IsNullOrEmpty(selectStr))
|
|
{
|
|
detailRows = this.source.Select(selectStr.Trim().TrimEnd('d', 'n', 'a')).ToList();
|
|
}
|
|
}
|
|
DataTable dataTable = this.source.Clone();
|
|
detailRows.CopyToDataTable(dataTable, LoadOption.PreserveChanges);
|
|
this.detailGrid.GridControl.DataSource = dataTable;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 窗体关闭时
|
|
private void FrmGridSift_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
DataTable dataTable = SqlHelper.ExecuteDataTable(string.Format("select * from p_SysModuleSchemeLogTab where operatorid='{0}' and moduleId='{1}'", ERPInfo.Instance.UserId, this.CustomColumKey));
|
|
if (dataTable.Rows.Count > 0)
|
|
{
|
|
string updateSqlStr = "update p_SysModuleSchemeLogTab set projectid='{0}' where moduleId='{1}' and operatorid='{2}'";
|
|
updateSqlStr = string.Format(updateSqlStr, this.ProjectModel.Id + "", this.CustomColumKey + "", ERPInfo.Instance.UserId + "");
|
|
SqlHelper.ExecuteNonQuery(updateSqlStr);
|
|
}
|
|
else
|
|
{
|
|
string insertSqlStr = "insert into p_SysModuleSchemeLogTab (moduleId,operatorid,projectid) values ('{0}','{1}','{2}')";
|
|
insertSqlStr = string.Format(insertSqlStr, this.CustomColumKey + "", ERPInfo.Instance.UserId + "", this.ProjectModel.Id + "");
|
|
SqlHelper.ExecuteNonQuery(insertSqlStr);
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
#region 方法
|
|
#region 删除单个控件
|
|
/// <summary>
|
|
/// <para>说明:删除单个控件</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 deleteItem(Lskj.Control.SiftColControl.DragItem dragItem)
|
|
{
|
|
WaitForm.ShowForm();
|
|
DevExpress.XtraEditors.PanelControl panel = dragItem.Parent as DevExpress.XtraEditors.PanelControl;
|
|
panel.Controls.Remove(dragItem);
|
|
RedRawDragItem(panel);
|
|
//updateGridViewData();
|
|
updateGridViewDataDynamic();
|
|
//this.gcMain.GridView.BestFitColumns();
|
|
WaitForm.HideForm();
|
|
}
|
|
#endregion
|
|
#region 点击开始拖拽
|
|
/// <summary>
|
|
/// <para>说明:点击开始拖拽</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 OnLeftGridView_MouseMove(object sender, MouseEventArgs e)
|
|
{
|
|
if (e.Button == MouseButtons.Left)
|
|
{
|
|
int[] selectIndexs = this.leftGridView.GetSelectedRows();
|
|
if (selectIndexs.Length > 0)
|
|
{
|
|
List<DataRow> selectRows = new List<DataRow>();
|
|
foreach (int index in selectIndexs)
|
|
{
|
|
selectRows.Add(this.leftGridView.GetDataRow(index));
|
|
}
|
|
startDrag(selectRows.ToArray());
|
|
}
|
|
}
|
|
}
|
|
private void startDrag(DataRow[] rows)
|
|
{
|
|
IDataObject data = new DataObject();
|
|
data.SetData(typeof(DataRow[]), rows);
|
|
this.DoDragDrop(data, DragDropEffects.Copy);
|
|
}
|
|
#endregion
|
|
#region 显示右键菜单
|
|
/// <summary>
|
|
/// <para>说明:显示右键菜单</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 showPopupMenu(Lskj.Control.SiftColControl.DragItem dragItem, MouseEventArgs e)
|
|
{
|
|
if (e.Button == MouseButtons.Right && dragItem.Parent == this.pl_Result)
|
|
{
|
|
popupMenu.ShowPopup(System.Windows.Forms.Control.MousePosition);
|
|
rightClickItem = dragItem;
|
|
}
|
|
}
|
|
#endregion
|
|
#region 拖拽完成后数据更新
|
|
/// <summary>
|
|
/// <para>说明:拖拽完成后数据更新</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 updateGridViewData()
|
|
{
|
|
DataTable leftSourceTab = this.leftGridControl.DataSourceTable();
|
|
List<string> _colName = new List<string>();
|
|
foreach (DataRow item in leftSourceTab.Rows)
|
|
{
|
|
_colName.Add(item["userName"] + "");
|
|
}
|
|
if (this.pl_groupByRow.Controls.Count != 0 && this.pl_GroupByCol.Controls.Count == 0)
|
|
{
|
|
DataTable dataTable = this.source;
|
|
DataTable afterUpdate = new DataTable();
|
|
int numRow = _colName.IndexOf((this.pl_groupByRow.Controls[0] as Lskj.Control.SiftColControl.DragItem).ItemLable.Tag.ToString());
|
|
var rows = dataTable.Rows.Cast<DataRow>();
|
|
var resultGroupedByColumn = rows.GroupBy(r => r.ItemArray[numRow]);//获取行分组信息
|
|
afterUpdate.Columns.Add(dataTable.Columns[numRow].Caption, typeof(string));
|
|
string errorString = string.Empty;
|
|
Lskj.Control.SiftColControl.DragItem errorDragItem = null;
|
|
try
|
|
{
|
|
if (this.pl_Result.Controls.Count != 0)
|
|
{
|
|
foreach (Lskj.Control.SiftColControl.DragItem dragItem in this.pl_Result.Controls)//添加列信息
|
|
{
|
|
if (dragItem.ItemLable.Text != dragItem.ItemLable.Tag.ToString())
|
|
afterUpdate.Columns.Add(dragItem.ItemLable.Text, typeof(string));
|
|
}
|
|
int index = 0;
|
|
foreach (IGrouping<object, DataRow> groupRow in resultGroupedByColumn)
|
|
{
|
|
DataRow dr = afterUpdate.NewRow();
|
|
dr[(this.pl_groupByRow.Controls[0] as Lskj.Control.SiftColControl.DragItem).ItemLable.Tag.ToString()] = groupRow.Key;//分组列
|
|
afterUpdate.Rows.Add(dr);
|
|
foreach (Lskj.Control.SiftColControl.DragItem dragItem in this.pl_Result.Controls)
|
|
{
|
|
DataColumn col = dragItem.Tag as DataColumn;
|
|
errorString = dragItem.dragItemModel.oper;
|
|
errorDragItem = dragItem;
|
|
if (dragItem.ItemLable.Text != dragItem.ItemLable.Tag.ToString())
|
|
RighMenuDecide(dragItem, afterUpdate, index, dragItem.ItemLable.Text, groupRow, col);
|
|
}
|
|
index++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (IGrouping<object, DataRow> groupRow in resultGroupedByColumn)
|
|
{
|
|
DataRow dr = afterUpdate.NewRow();
|
|
dr[(this.pl_groupByRow.Controls[0] as Lskj.Control.SiftColControl.DragItem).ItemLable.Tag.ToString()] = groupRow.Key;//分组列
|
|
afterUpdate.Rows.Add(dr);
|
|
}
|
|
}
|
|
this.gcMain.GridView.Columns.Clear();
|
|
this.gcMain.GridControl.DataSource = afterUpdate;
|
|
SetColumnSumming();
|
|
try
|
|
{
|
|
AddChart(afterUpdate);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageUtil.Show(string.Format("当前列数据类型不允许执行{0}操作!", errorString));
|
|
errorDragItem.ItemLable.Text = errorDragItem.ItemLable.Tag.ToString() + "(计数)";
|
|
errorDragItem.dragItemModel.oper = "Num";
|
|
errorDragItem.Width = errorDragItem.ItemLable.Width + 10 + errorDragItem.ItemBtn.Height;
|
|
AlterRepeatItem(this.pl_Result, errorDragItem);
|
|
RedRawDragItem(this.pl_Result);
|
|
updateGridViewData();
|
|
}
|
|
}
|
|
if (this.pl_groupByRow.Controls.Count == 0 && this.pl_GroupByCol.Controls.Count == 0)
|
|
{
|
|
DataTable dataTable = this.source;
|
|
DataTable afterUpdate = new DataTable();
|
|
foreach (Lskj.Control.SiftColControl.DragItem dragItem in this.pl_Result.Controls)
|
|
{
|
|
if (dragItem.ItemLable.Text != dragItem.ItemLable.Tag.ToString())
|
|
afterUpdate.Columns.Add(dragItem.ItemLable.Text, typeof(string));//添加列
|
|
}
|
|
DataRow dr = afterUpdate.NewRow();
|
|
afterUpdate.Rows.Add(dr);
|
|
DataRow[] groupRow = dataTable.Select();
|
|
string errorString = string.Empty;
|
|
Lskj.Control.SiftColControl.DragItem errorDragItem = null;
|
|
try
|
|
{
|
|
int index = 0;
|
|
foreach (Lskj.Control.SiftColControl.DragItem dragItem in this.pl_Result.Controls)
|
|
{
|
|
DataColumn col = dragItem.Tag as DataColumn;
|
|
errorString = dragItem.dragItemModel.oper;
|
|
errorDragItem = dragItem;
|
|
if (dragItem.ItemLable.Text != dragItem.ItemLable.Tag.ToString())
|
|
RighMenuDecide(dragItem, afterUpdate, 0, dragItem.ItemLable.Text, groupRow, col);
|
|
index++;
|
|
}
|
|
this.gcMain.GridView.Columns.Clear();
|
|
this.gcMain.GridControl.DataSource = afterUpdate;
|
|
SetColumnSumming();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageUtil.Show(string.Format("当前列数据类型不允许执行{0}操作!", errorString));
|
|
errorDragItem.ItemLable.Text = errorDragItem.ItemLable.Tag.ToString() + "(计数)";
|
|
errorDragItem.dragItemModel.oper = "Num";
|
|
errorDragItem.Width = errorDragItem.ItemLable.Width + 10 + errorDragItem.ItemBtn.Height;
|
|
AlterRepeatItem(this.pl_Result, errorDragItem);
|
|
RedRawDragItem(this.pl_Result);
|
|
updateGridViewData();
|
|
}
|
|
}
|
|
if (this.pl_groupByRow.Controls.Count != 0 && this.pl_GroupByCol.Controls.Count != 0)
|
|
{
|
|
DataTable dataTable = this.source;
|
|
DataTable afterUpdate = new DataTable();
|
|
var rows = dataTable.Rows.Cast<DataRow>();
|
|
int numRow = _colName.IndexOf((this.pl_groupByRow.Controls[0] as Lskj.Control.SiftColControl.DragItem).ItemLable.Tag.ToString());
|
|
int numCol = _colName.IndexOf((this.pl_GroupByCol.Controls[0] as Lskj.Control.SiftColControl.DragItem).ItemLable.Tag.ToString());
|
|
var resultGroupedByRow = rows.GroupBy(r => r.ItemArray[numRow]);//获取行分组信息
|
|
var resultGroupedByCol = rows.GroupBy(r => r.ItemArray[numCol]);//获取列分组信息
|
|
|
|
afterUpdate.Columns.Add(dataTable.Columns[numRow].Caption, typeof(string));
|
|
int Num = 1;
|
|
foreach (IGrouping<object, DataRow> groupCol in resultGroupedByCol)
|
|
{
|
|
string nullColName = "Null" + Num;
|
|
if (!string.IsNullOrEmpty(groupCol.Key.ToString()))
|
|
afterUpdate.Columns.Add(groupCol.Key.ToString(), typeof(string));//添加列分组的列
|
|
else
|
|
{
|
|
afterUpdate.Columns.Add(nullColName, dataTable.Columns[numCol].DataType);
|
|
Num = Num + 1; ;
|
|
}
|
|
}
|
|
string errorString = string.Empty;
|
|
Lskj.Control.SiftColControl.DragItem errorDragItem = null;
|
|
try
|
|
{
|
|
int index = 0;
|
|
foreach (IGrouping<object, DataRow> groupRow in resultGroupedByRow)
|
|
{
|
|
DataRow dr = afterUpdate.NewRow();
|
|
dr[(this.pl_groupByRow.Controls[0] as Lskj.Control.SiftColControl.DragItem).ItemLable.Tag.ToString()] = groupRow.Key;//分组列
|
|
afterUpdate.Rows.Add(dr);
|
|
if (this.pl_Result.Controls.Count != 0)
|
|
{
|
|
DataColumn col = this.pl_Result.Controls[0].Tag as DataColumn;
|
|
errorDragItem = this.pl_Result.Controls[0] as Lskj.Control.SiftColControl.DragItem;
|
|
int _Num = 1;
|
|
foreach (IGrouping<object, DataRow> groupCol in resultGroupedByCol)
|
|
{
|
|
var result = dataTable.Select().Where(n => n[(this.pl_GroupByCol.Controls[0].Tag as DataColumn).ColumnName].Equals(groupCol.Key) && n[(this.pl_groupByRow.Controls[0].Tag as DataColumn).ColumnName].Equals(groupRow.Key));
|
|
if (result.Count() > 0 && !string.IsNullOrEmpty(groupCol.Key.ToString()))
|
|
RighMenuDecide(this.pl_Result.Controls[0] as Lskj.Control.SiftColControl.DragItem, afterUpdate, index, groupCol.Key.ToString(), result, col);
|
|
else if (result.Count() > 0 && string.IsNullOrEmpty(groupCol.Key.ToString()))
|
|
RighMenuDecide(this.pl_Result.Controls[0] as Lskj.Control.SiftColControl.DragItem, afterUpdate, index, "Null" + _Num, result, col);
|
|
}
|
|
}
|
|
index++;
|
|
}
|
|
this.gcMain.GridView.Columns.Clear();
|
|
this.gcMain.GridControl.DataSource = afterUpdate;
|
|
SetColumnSumming();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageUtil.Show(string.Format("当前列数据类型不允许执行{0}操作!", errorString));
|
|
errorDragItem.ItemLable.Text = errorDragItem.ItemLable.Tag.ToString() + "(计数)";
|
|
errorDragItem.dragItemModel.oper = "Num";
|
|
errorDragItem.Width = errorDragItem.ItemLable.Width + 10 + errorDragItem.ItemBtn.Height;
|
|
AlterRepeatItem(this.pl_Result, errorDragItem);
|
|
RedRawDragItem(this.pl_Result);
|
|
updateGridViewData();
|
|
}
|
|
}
|
|
if (this.pl_groupByRow.Controls.Count == 0 && this.pl_GroupByCol.Controls.Count != 0)
|
|
{
|
|
DataTable dataTable = this.source;
|
|
DataTable afterUpdate = new DataTable();
|
|
var rows = dataTable.Rows.Cast<DataRow>();
|
|
int numCol = _colName.IndexOf((this.pl_GroupByCol.Controls[0] as Lskj.Control.SiftColControl.DragItem).ItemLable.Tag.ToString());
|
|
var resultGroupedByCol = rows.GroupBy(r => r.ItemArray[numCol]);//获取列分组信息
|
|
|
|
int Num = 1;
|
|
foreach (IGrouping<object, DataRow> groupCol in resultGroupedByCol)
|
|
{
|
|
string nullColName = "Null" + Num;
|
|
if (!string.IsNullOrEmpty(groupCol.Key.ToString()))
|
|
afterUpdate.Columns.Add(groupCol.Key.ToString(), typeof(string));//添加列分组的列
|
|
else
|
|
{
|
|
afterUpdate.Columns.Add(nullColName, typeof(string));//添加列分组的列
|
|
Num = Num + 1; ;
|
|
}
|
|
}
|
|
string errorString = string.Empty;
|
|
Lskj.Control.SiftColControl.DragItem errorDragItem = null;
|
|
try
|
|
{
|
|
int index = 0;
|
|
DataRow dr = afterUpdate.NewRow();
|
|
afterUpdate.Rows.Add(dr);
|
|
if (this.pl_Result.Controls.Count != 0)
|
|
{
|
|
errorDragItem = this.pl_Result.Controls[0] as Lskj.Control.SiftColControl.DragItem;
|
|
int _Num = 1;
|
|
foreach (IGrouping<object, DataRow> groupCol in resultGroupedByCol)
|
|
{
|
|
DataColumn col = this.pl_Result.Controls[0].Tag as DataColumn;
|
|
var result = dataTable.Select().Where(n => n[(this.pl_GroupByCol.Controls[0].Tag as DataColumn).ColumnName].Equals(groupCol.Key));
|
|
if (result.Count() > 0 && !string.IsNullOrEmpty(groupCol.Key.ToString()))
|
|
RighMenuDecide(this.pl_Result.Controls[0] as Lskj.Control.SiftColControl.DragItem, afterUpdate, index, groupCol.Key.ToString(), result, col);
|
|
else if (result.Count() > 0 && string.IsNullOrEmpty(groupCol.Key.ToString()))
|
|
RighMenuDecide(this.pl_Result.Controls[0] as Lskj.Control.SiftColControl.DragItem, afterUpdate, index, "Null" + _Num, result, col);
|
|
}
|
|
index++;
|
|
}
|
|
this.gcMain.GridView.Columns.Clear();
|
|
this.gcMain.GridControl.DataSource = afterUpdate;
|
|
SetColumnSumming();
|
|
try
|
|
{
|
|
AddChart(afterUpdate);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageUtil.Show(string.Format("当前列数据类型不允许执行{0}操作!", errorString));
|
|
errorDragItem.ItemLable.Text = errorDragItem.ItemLable.Tag.ToString() + "(计数)";
|
|
errorDragItem.dragItemModel.oper = "Num";
|
|
errorDragItem.Width = errorDragItem.ItemLable.Width + 10 + errorDragItem.ItemBtn.Height;
|
|
AlterRepeatItem(this.pl_Result, errorDragItem);
|
|
RedRawDragItem(this.pl_Result);
|
|
updateGridViewData();
|
|
}
|
|
}
|
|
if (this.pl_groupByRow.Controls.Count == 0 && this.pl_Result.Controls.Count == 0 && this.pl_GroupByCol.Controls.Count == 0)
|
|
{
|
|
this.gcMain.GridView.Columns.Clear();
|
|
this.gcMain.GridControl.DataSource = source;
|
|
}
|
|
}
|
|
#endregion
|
|
#region 动态分组统计
|
|
private void updateGridViewDataDynamic(bool isBatch = false)
|
|
{
|
|
bool isWaitShow = WaitForm.LoadForm.IsSplashFormVisible;
|
|
if (!isWaitShow)
|
|
{
|
|
WaitForm.ShowForm();
|
|
}
|
|
try
|
|
{
|
|
WaitForm.ShowForm();
|
|
List<string> groupLists = GetGroupRowList();
|
|
DataTable dataTable = this.source;
|
|
DataTable groupDataTable = new DataTable();
|
|
if (groupLists.Count > 0)
|
|
{
|
|
foreach (string group in groupLists)//创建分组列
|
|
{
|
|
DataColumn col = new DataColumn();
|
|
col.ColumnName = dataTable.Columns[group].ColumnName;
|
|
col.Caption = dataTable.Columns[group].Caption;
|
|
col.DataType = dataTable.Columns[group].DataType;
|
|
groupDataTable.Columns.Add(col);
|
|
}
|
|
Dictionary<string, DragItem> targetCols = new Dictionary<string, DragItem>();
|
|
foreach (DragItem dragItem in this.pl_Result.Controls)//创建统计列
|
|
{
|
|
try
|
|
{
|
|
if (!string.IsNullOrEmpty(dragItem.dragItemModel.oper))
|
|
{
|
|
DataColumn col = new DataColumn();//"GroupResult$"为统计列字段标识符
|
|
col.ColumnName = string.Format("{0}_{1}_{2}", "GroupResult$", dragItem.dragItemModel.name, dragItem.dragItemModel.oper);
|
|
col.Caption = dragItem.ItemLable.Text;
|
|
col.DataType = typeof(decimal);
|
|
targetCols.Add(col.ColumnName, dragItem);
|
|
groupDataTable.Columns.Add(col);
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
if (groupLists.Count > 0)
|
|
{
|
|
var groupList = dataTable.AsEnumerable().GroupBy(dataRow =>
|
|
{
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
groupLists.ForEach(column => stringBuilder.Append(dataRow[column] + ""));
|
|
return stringBuilder + "";
|
|
});
|
|
this.groupResultLists = groupList;
|
|
foreach (var group in groupList)
|
|
{
|
|
List<DataRow> groupRows = new List<DataRow>();
|
|
foreach (DataRow groupRow in group)
|
|
{
|
|
groupRows.Add(groupRow);
|
|
}
|
|
DataRow newRow = groupDataTable.NewRow();
|
|
foreach (DataColumn col in newRow.Table.Columns)
|
|
{
|
|
if (targetCols.ContainsKey(col.ColumnName))//是统计列
|
|
{
|
|
string colName = targetCols[col.ColumnName].dragItemModel.name;
|
|
string oper = targetCols[col.ColumnName].dragItemModel.oper;
|
|
try
|
|
{
|
|
switch (oper)
|
|
{
|
|
case "Sum":
|
|
newRow[col] = groupRows.Where(m => m[colName].GetType() != typeof(DBNull)).Sum(n => Convert.ToDouble(n[colName]));
|
|
break;
|
|
case "Avg":
|
|
newRow[col] = groupRows.Where(m => m[colName].GetType() != typeof(DBNull)).Average(n => Convert.ToDouble(n[colName]));
|
|
break;
|
|
case "Num":
|
|
newRow[col] = groupRows.Count();
|
|
break;
|
|
case "Max":
|
|
newRow[col] = groupRows.Where(m => m[colName].GetType() != typeof(DBNull)).Max(n => Convert.ChangeType(n[colName], col.DataType));
|
|
break;
|
|
case "Min":
|
|
newRow[col] = groupRows.Where(m => m[colName].GetType() != typeof(DBNull)).Min(n => Convert.ChangeType(n[colName], col.DataType));
|
|
break;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
if (!isBatch)
|
|
{
|
|
MessageUtil.Show(string.Format("当前列数据类型不允许执行{0}操作!", oper));
|
|
targetCols[col.ColumnName].ItemLable.Text = targetCols[col.ColumnName].ItemLable.Tag + "";
|
|
targetCols[col.ColumnName].dragItemModel.oper = "";
|
|
targetCols[col.ColumnName].Width = targetCols[col.ColumnName].ItemLable.Width + 10 + targetCols[col.ColumnName].ItemBtn.Height;
|
|
updateGridViewDataDynamic(isBatch);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
newRow[col.ColumnName] = groupRows[0][col.ColumnName];
|
|
}
|
|
}
|
|
groupDataTable.Rows.Add(newRow);
|
|
}
|
|
}
|
|
}
|
|
if (groupDataTable.Columns.Count > 0)
|
|
{
|
|
DataTable orderTable = groupDataTable.Clone();
|
|
groupDataTable.Select().OrderBy(n => n[groupDataTable.Columns[0]]).CopyToDataTable(orderTable, LoadOption.PreserveChanges);
|
|
InitShowDataGridColumns(orderTable);
|
|
try
|
|
{
|
|
AddChart(groupDataTable);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
}
|
|
//SetColumnSumming();
|
|
if (groupDataTable.Columns.Count == 0)
|
|
{
|
|
InitShowDataGridColumns(source);
|
|
this.groupResultLists = null;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
if (!isWaitShow)
|
|
{
|
|
WaitForm.HideForm();
|
|
}
|
|
}
|
|
#endregion
|
|
#region 重绘拖拽控件排布
|
|
/// <summary>
|
|
/// <para>说明:重绘拖拽控件排布</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 RedRawDragItem(System.Windows.Forms.Control panelControl)
|
|
{
|
|
int top = 0; int left = 2;
|
|
for (int i = 0; i < panelControl.Controls.Count; i++)
|
|
{
|
|
if (left + panelControl.Controls[i].Width > panelControl.Width)
|
|
{
|
|
top += panelControl.Controls[i].Height + 2; left = 2;
|
|
panelControl.Controls[i].Location = new Point(left, top);
|
|
left += panelControl.Controls[i].Width + 2;
|
|
}
|
|
else
|
|
{
|
|
panelControl.Controls[i].Location = new Point(left, top);
|
|
left += panelControl.Controls[i].Width + 2;
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region 判断当前控件是否重复
|
|
/// <summary>
|
|
/// <para>说明:判断当前控件是否重复</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 bool AlterRepeatItem(System.Windows.Forms.Control panelControl, Lskj.Control.SiftColControl.DragItem dragItem)
|
|
{
|
|
List<string> colName = new List<string>();
|
|
foreach (Lskj.Control.SiftColControl.DragItem Item in panelControl.Controls)
|
|
{
|
|
colName.Add(Item.ItemLable.Text);
|
|
}
|
|
if (colName.Count(n => n == dragItem.ItemLable.Text) > 1)
|
|
{
|
|
MessageUtil.Show(string.Format("字段:{0}{1}操作重复!", dragItem.ItemLable.Tag, dragItem.dragItemModel.oper));
|
|
dragItem.ItemLable.Text = dragItem.ItemLable.Tag.ToString();
|
|
dragItem.dragItemModel.oper = "";
|
|
dragItem.Width = dragItem.ItemLable.Width + 10 + dragItem.ItemBtn.Height;
|
|
return false;
|
|
}
|
|
else
|
|
return true;
|
|
}
|
|
#endregion
|
|
#region 右键判定条件
|
|
/// <summary>
|
|
/// <para>说明:右键判定条件</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 RighMenuDecide(Lskj.Control.SiftColControl.DragItem dragItem, DataTable afterUpdate, int index, string colName, IEnumerable<DataRow> result, DataColumn col)
|
|
{
|
|
switch (dragItem.dragItemModel.oper)
|
|
{
|
|
case "Sum":
|
|
afterUpdate.Rows[index][colName] = result.Where(m => m[col.ColumnName].GetType() != typeof(DBNull)).Sum(n => Convert.ToDouble(n[col.ColumnName]));
|
|
break;
|
|
case "Avg":
|
|
afterUpdate.Rows[index][colName] = result.Where(m => m[col.ColumnName].GetType() != typeof(DBNull)).Average(n => Convert.ToDouble(n[col.ColumnName]));
|
|
break;
|
|
case "Num":
|
|
afterUpdate.Rows[index][colName] = result.Count();
|
|
break;
|
|
case "Max":
|
|
afterUpdate.Rows[index][colName] = result.Where(m => m[col.ColumnName].GetType() != typeof(DBNull)).Max(n => Convert.ChangeType(n[col.ColumnName], col.DataType));
|
|
break;
|
|
case "Min":
|
|
afterUpdate.Rows[index][colName] = result.Where(m => m[col.ColumnName].GetType() != typeof(DBNull)).Min(n => Convert.ChangeType(n[col.ColumnName], col.DataType));
|
|
break;
|
|
}
|
|
}
|
|
#endregion
|
|
#region 显示合计
|
|
/// <summary>
|
|
/// <para>说明:设置合计</para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
private void SetColumnSumming()
|
|
{
|
|
foreach (GridColumn column in this.gcMain.GridView.Columns)
|
|
{
|
|
if (column.Summary.Count == 0)
|
|
{
|
|
column.Summary.AddRange(new GridSummaryItem[] { new GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, column.FieldName, "{0:#,###.######}") });
|
|
this.gcMain.GridView.GroupSummary.AddRange(new GridSummaryItem[] { new GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, column.FieldName, null, "{0:#,###.######}") });
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region 显示行号
|
|
/// <summary>
|
|
/// <para>说明:显示行号</para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
public static void BindCustomDrawRowIndicator(DevExpress.XtraGrid.Views.Grid.GridView view)
|
|
{
|
|
view.IndicatorWidth = CalcIndicatorDefaultWidth(view);
|
|
view.CustomDrawRowIndicator += (s, e) =>
|
|
{
|
|
if (e.RowHandle >= 0)
|
|
{
|
|
e.Info.DisplayText = (e.RowHandle + 1).ToString();
|
|
}
|
|
};
|
|
view.TopRowChanged += (s, e) =>
|
|
{
|
|
int width = CalcIndicatorBestWidth(view);
|
|
if ((view.IndicatorWidth - 4 < width || view.IndicatorWidth + 4 > width) && view.IndicatorWidth != width)
|
|
{
|
|
view.IndicatorWidth = width;
|
|
}
|
|
};
|
|
}
|
|
/// <summary>
|
|
/// 计算行头宽度
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <returns></returns>
|
|
static int CalcIndicatorBestWidth(DevExpress.XtraGrid.Views.Grid.GridView view)
|
|
{
|
|
int count = view.TopRowIndex + ((DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo)view.GetViewInfo()).RowsInfo.Count;
|
|
if (count == 0)
|
|
{
|
|
count = 30;
|
|
}
|
|
int textWidth = TextRenderer.MeasureText(
|
|
count.ToString(),
|
|
view.Appearance.Row.Font,
|
|
Size.Empty,
|
|
TextFormatFlags.NoPadding | TextFormatFlags.SingleLine).Width;
|
|
return textWidth + 20;
|
|
}
|
|
/// <summary>
|
|
/// 计算默认的宽度
|
|
/// </summary>
|
|
/// <param name="view"></param>
|
|
/// <returns></returns>
|
|
static int CalcIndicatorDefaultWidth(DevExpress.XtraGrid.Views.Grid.GridView view)
|
|
{
|
|
var grid = view.GridControl;
|
|
int rowHeight = 22;//22是Row的估计高度
|
|
if (view.RowHeight > 0)
|
|
{
|
|
rowHeight = view.RowHeight;
|
|
}
|
|
int count = grid != null ? grid.Height / rowHeight : 30;
|
|
int textWidth = TextRenderer.MeasureText(
|
|
count.ToString(),
|
|
view.Appearance.Row.Font,
|
|
Size.Empty,
|
|
TextFormatFlags.NoPadding | TextFormatFlags.SingleLine).Width;
|
|
return textWidth + 20;
|
|
}
|
|
#endregion
|
|
#region 选中行颜色改变
|
|
private void SelectRowChangeBackColor(GridView View)
|
|
{
|
|
View.CustomDrawCell += View_CustomDrawCell;
|
|
}
|
|
private void View_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
GridView senderGridView = (GridView)sender;
|
|
if (senderGridView.OptionsSelection.MultiSelect == true && senderGridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect)
|
|
{
|
|
int[] selectRows = senderGridView.GetSelectedRows();
|
|
foreach (int selectRow in selectRows)
|
|
{//#9feb6a
|
|
if (e.RowHandle == selectRow)
|
|
e.Appearance.BackColor = ColorTranslator.FromHtml("#9feb6a");
|
|
}
|
|
}
|
|
else if (e.RowHandle == senderGridView.FocusedRowHandle)
|
|
e.Appearance.BackColor = ColorTranslator.FromHtml("#9feb6a");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 根据数据创建一个图形展现
|
|
/// <summary>
|
|
/// <para>说明:根据数据创建一个图形展现</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-29 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="colName">Name of the col.</param>
|
|
/// <param name="colValue">The col value.</param>
|
|
/// <param name="series">The series.</param>
|
|
/// <returns>Series.</returns>
|
|
private Series CreateSeries(string colName, string colValue, Series series)
|
|
{
|
|
series.Points.Add(new SeriesPoint(colName + "" == "" ? "*指标为空*" : colName, colValue + "" == "" ? "0" : colValue));
|
|
series.ArgumentScaleType = ScaleType.Qualitative;
|
|
series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;//显示标注标签
|
|
return series;
|
|
}
|
|
#endregion
|
|
#region 根据数据创建一个饼图展现
|
|
/// <summary>
|
|
/// <para>说明:根据数据创建一个饼图展现</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-29 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="colName">Name of the col.</param>
|
|
/// <param name="colValue">The col value.</param>
|
|
/// <param name="series">The series.</param>
|
|
/// <returns>Series.</returns>
|
|
private Series CreateSeriesPie(String colName, String colValue, Series series)
|
|
{
|
|
series.Points.Add(new SeriesPoint(colName + "" == "" ? "*指标为空*" : colName, new double[] { Convert.ToDouble(colValue + "" == "" ? "0" : colValue) }));
|
|
return series;
|
|
}
|
|
#endregion
|
|
#region 创建图表数据线
|
|
/// <summary>
|
|
/// <para>说明:创建图表</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-29 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="chart">The chart.</param>
|
|
private void CreateSeriesChart(Series series, DataTable chartData, DataColumn resultCol, ViewType type)
|
|
{
|
|
List<DataColumn> groupCols = chartData.Columns.Cast<DataColumn>().Where(n => !n.ColumnName.StartsWith("GroupResult$")).ToList();
|
|
foreach (DataRow item in chartData.Rows)
|
|
{
|
|
string xValue = "";
|
|
for (int i = 0; i < groupCols.Count; i++)
|
|
{
|
|
DataColumn groupCol = groupCols[i];
|
|
GridColumn gridColumn = this.gcMain.GridView.Columns.Where(n => n.FieldName.Equals(groupCol.ColumnName)).FirstOrDefault();
|
|
if (gridColumn == null)
|
|
{
|
|
continue;
|
|
}
|
|
//int rowIndex = this.gcMain.GridView.GetVisibleIndex(i);
|
|
//int rowIndex = chartData.Rows.IndexOf(item);
|
|
string value = item[groupCol] + "";
|
|
string displayText = this.gcMain.GridView.GetDisplayTextByColumnValue(gridColumn, value);
|
|
xValue += string.Format("{0},", displayText);
|
|
}
|
|
xValue = xValue.TrimEnd(',');
|
|
if (type == ViewType.Pie)
|
|
{
|
|
string yValue = item[resultCol].ToString();
|
|
CreateSeries(xValue, yValue, series);
|
|
}
|
|
else
|
|
{
|
|
string yValue = item[resultCol].ToString();
|
|
CreateSeries(xValue, yValue, series);
|
|
}
|
|
}
|
|
//if (this.pl_groupByRow.Controls.Count == 0)
|
|
//{
|
|
// foreach (DataColumn item in chartData.Columns)
|
|
// {
|
|
// if (type == ViewType.Pie)
|
|
// {
|
|
// string xValue = item.ColumnName.ToString();
|
|
// string yValue = item.Table.Rows[1][item.ColumnName].ToString();
|
|
// CreateSeries(xValue, yValue, series);
|
|
// }
|
|
// else
|
|
// {
|
|
// string xValue = item.ColumnName.ToString();
|
|
// string yValue = item.Table.Rows[i][item.ColumnName].ToString();
|
|
// CreateSeries(xValue, yValue, series);
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
#endregion
|
|
#region 创建图表
|
|
/// <summary>
|
|
/// <para>说明:创建图表</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-29 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="models">The models.</param>
|
|
/// <param name="fields">The fields.</param>
|
|
public void CreateChart(ChartControlEx chart, DataTable chartData, ViewType type)
|
|
{
|
|
if (chart.cmMain.Diagram is XYDiagram)
|
|
(chart.cmMain.Diagram as XYDiagram).SecondaryAxesY.Clear();
|
|
chart.cmMain.Series.Clear();
|
|
if (chartData.Rows.Count > 0 && chartData.Columns.Count > 1)
|
|
{
|
|
List<DataColumn> resultCols = chartData.Columns.Cast<DataColumn>().Where(n => n.ColumnName.StartsWith("GroupResult$")).ToList();
|
|
for (int i = 0; i < resultCols.Count; i++)
|
|
{
|
|
DataColumn resultCol = resultCols[i];
|
|
Series series = null;
|
|
series = new Series(resultCol.Caption, type);
|
|
if (series != null)
|
|
{
|
|
if (type == ViewType.Pie)
|
|
{
|
|
PiePointOptions options = series.Label.PointOptions as PiePointOptions;
|
|
series.LegendPointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
|
|
series.LegendPointOptions.ValueNumericOptions.Precision = 4;
|
|
|
|
((PiePointOptions)series.LegendPointOptions).PointView = PointView.ArgumentAndValues;
|
|
PieSeriesView view = series.View as PieSeriesView;
|
|
view.ExplodeMode = PieExplodeMode.All;
|
|
view.Rotation = 50;
|
|
view.RuntimeExploding = true;
|
|
series.LabelsVisibility = DefaultBoolean.True;
|
|
|
|
if (options != null)
|
|
{
|
|
options.PercentOptions.ValueAsPercent = true;
|
|
options.PointView = PointView.ArgumentAndValues;
|
|
}
|
|
this.CreateSeriesChart(series, chartData, resultCols[0], type);
|
|
if (chart.cmMain.Series.Count == 0)
|
|
{
|
|
chart.cmMain.Series.Add(series);
|
|
chart.cmMain.CustomDrawSeriesPoint -= CmMain_CustomDrawSeriesPoint;
|
|
chart.cmMain.CustomDrawSeriesPoint += CmMain_CustomDrawSeriesPoint;
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
this.CreateSeriesChart(series, chartData, resultCol, type);
|
|
chart.cmMain.Series.Add(series);
|
|
XYDiagram diagram = (XYDiagram)chart.ChartControlObj.Diagram;
|
|
diagram.AxisX.VisualRange.SideMarginsValue = 0;
|
|
diagram.ZoomingOptions.UseMouseWheel = true;
|
|
diagram.EnableAxisXZooming = true;
|
|
diagram.EnableAxisXScrolling = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
chart.cmMain.Legend.Visibility = DefaultBoolean.True;
|
|
chart.cmMain.SeriesTemplate.LabelsVisibility = DefaultBoolean.True;
|
|
chart.cmMain.CrosshairEnabled = DefaultBoolean.True;
|
|
chart.cmMain.ToolTipEnabled = DefaultBoolean.True;
|
|
}
|
|
|
|
|
|
|
|
private void AddChart(DataTable chartData)
|
|
{
|
|
for (int i = 0; i < this.DetailTabControl.TabPages.Count; i++)
|
|
{
|
|
XtraTabPage xtraTabPage = this.DetailTabControl.TabPages[i];
|
|
ChartControlEx chart = this.DetailTabControl.TabPages[i].Controls[0] as ChartControlEx;
|
|
switch (xtraTabPage.Text)
|
|
{
|
|
case "饼图":
|
|
CreateChart(chart, chartData, ViewType.Pie);
|
|
break;
|
|
case "柱形图":
|
|
CreateChart(chart, chartData, ViewType.Bar);
|
|
break;
|
|
case "折线图":
|
|
CreateChart(chart, chartData, ViewType.Line);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region 初始化事件
|
|
private void InitEvent()
|
|
{
|
|
this.BtnClear.Click += OnBtnClear_Click;
|
|
this.pl_groupByRow.DragEnter += OnDragEnter;
|
|
this.pl_groupByRow.DragDrop += OnDragDrop;
|
|
this.pl_GroupByCol.DragEnter += OnDragEnter;
|
|
this.pl_GroupByCol.DragDrop += OnDragDrop;
|
|
this.pl_Result.DragEnter += OnDragEnter;
|
|
this.pl_Result.DragDrop += OnDragDrop;
|
|
this.checkRowSum.CheckedChanged += OncheckRowSum_CheckedChanged;
|
|
this.checkShowChart.CheckedChanged += OncheckShowChart_CheckedChanged;
|
|
this.splitContainerControl.SplitterPositionChanged += OnSplitContainerControl_SplitterPositionChanged;
|
|
this.splitMainContainerControl.SplitterPositionChanged += OnSplitMainContainerControl_SplitterPositionChanged;
|
|
this.pl_Result.MouseUp += OnPl_Result_MouseUp;
|
|
this.checkProject.SelectedIndexChanged += new EventHandler(OnCheckProject_SelectedIndexChanged);
|
|
this.saveBtn.Click += new EventHandler(saveBtn_Click);
|
|
this.saveAsBtn.Click += new EventHandler(saveAsBtn_Click);
|
|
this.deleteBtn.Click += new EventHandler(deleteBtn_Click);
|
|
this.FormClosing += new FormClosingEventHandler(FrmGridSift_FormClosing);
|
|
}
|
|
#endregion
|
|
#region 初始化分割条位置
|
|
/// <summary>
|
|
/// <para>说明:初始化分割条位置</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2017-12-15</para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
private void InitSpliterPosition()
|
|
{
|
|
string spliterPosition = IniHelper.Read(string.Format("Step_spliterPositionMain_{0}", "FrmGridSift"));
|
|
if (!string.IsNullOrEmpty(spliterPosition)) this.splitContainerControl.SplitterPosition = Convert.ToInt32(spliterPosition);
|
|
}
|
|
private void InitMainSpliterPosition()
|
|
{
|
|
string spliterPosition = IniHelper.Read(string.Format("Step_spliterMainPositionMain_{0}", "FrmGridSift"));
|
|
if (!string.IsNullOrEmpty(spliterPosition)) this.splitMainContainerControl.SplitterPosition = Convert.ToInt32(spliterPosition);
|
|
}
|
|
#endregion
|
|
#region 初始化导出下拉按钮
|
|
/// <summary>
|
|
/// <para>说明:初始化导出下拉按钮</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-02</para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// </summary>
|
|
private void InitExportDrop()
|
|
{
|
|
BarButtonItem itemExportExcel = new BarButtonItem();
|
|
itemExportExcel.Caption = "导出主表Excel";
|
|
itemExportExcel.ItemClick += new ItemClickEventHandler(OnItemExportExcel_ItemClick);
|
|
BarButtonItem itemExportDetail = new BarButtonItem();
|
|
itemExportDetail.Caption = "导出明细Excel";
|
|
itemExportDetail.ItemClick += new ItemClickEventHandler(OnItemExportDetail_ItemClick);
|
|
PopupMenu exportPopupMenu = new PopupMenu();
|
|
exportPopupMenu.Manager = this.barManager;
|
|
exportPopupMenu.AddItems(new BarItem[] { itemExportExcel, itemExportDetail });
|
|
this.exportDropBtn.DropDownControl = exportPopupMenu;
|
|
}
|
|
#endregion
|
|
#region 初始化图表展示
|
|
private void InitChart()
|
|
{
|
|
ViewType[] types = new ViewType[] { ViewType.Pie, ViewType.Area, ViewType.Line };
|
|
for (int i = 0; i < this.DetailTabControl.TabPages.Count; i++)
|
|
{
|
|
ChartControlEx chart = new ChartControlEx();
|
|
chart.GridControlObj.Visible = false;
|
|
chart.Dock = DockStyle.Fill;
|
|
this.DetailTabControl.TabPages[i].Controls.Add(chart);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 初始化统计右键菜单
|
|
private void InitResultRightMenu()
|
|
{
|
|
popupMenu = new DevExpress.XtraBars.PopupMenu(barManager);
|
|
BarButtonItem barButtonItemSum = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemSum.Caption = "求和";
|
|
barButtonItemSum.Name = "Sum";
|
|
BarButtonItem barButtonItemNum = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemNum.Caption = "计数";
|
|
barButtonItemNum.Name = "Num";
|
|
BarButtonItem barButtonItemAvg = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemAvg.Caption = "平均";
|
|
barButtonItemAvg.Name = "Avg";
|
|
BarButtonItem barButtonItemMax = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemMax.Caption = "最大";
|
|
barButtonItemMax.Name = "Max";
|
|
BarButtonItem barButtonItemMin = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemMin.Caption = "最小";
|
|
barButtonItemMin.Name = "Min";
|
|
popupMenu.AddItems(new BarButtonItem[] { barButtonItemSum, barButtonItemNum, barButtonItemAvg, barButtonItemMax, barButtonItemMin });
|
|
for (int i = 0; i < popupMenu.ItemLinks.Count; i++)
|
|
{
|
|
popupMenu.ItemLinks[i].BeginGroup = true;//设置分割条
|
|
popupMenu.ItemLinks[i].Item.ItemClick += OnItem_ItemClick;
|
|
}
|
|
allpopupMenu = new DevExpress.XtraBars.PopupMenu(barManager);
|
|
BarButtonItem barButtonItemAllSum = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemAllSum.Caption = "一键求和";
|
|
barButtonItemAllSum.Name = "Sum";
|
|
BarButtonItem barButtonItemAllNum = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemAllNum.Caption = "一键计数";
|
|
barButtonItemAllNum.Name = "Num";
|
|
BarButtonItem barButtonItemAllAvg = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemAllAvg.Caption = "一键平均";
|
|
barButtonItemAllAvg.Name = "Avg";
|
|
BarButtonItem barButtonItemAllMax = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemAllMax.Caption = "一键最大";
|
|
barButtonItemAllMax.Name = "Max";
|
|
BarButtonItem barButtonItemAllMin = new DevExpress.XtraBars.BarButtonItem();
|
|
barButtonItemAllMin.Caption = "一键最小";
|
|
barButtonItemAllMin.Name = "Min";
|
|
allpopupMenu.AddItems(new BarButtonItem[] { barButtonItemAllSum, barButtonItemAllNum, barButtonItemAllAvg, barButtonItemAllMax, barButtonItemAllMin });
|
|
for (int i = 0; i < allpopupMenu.ItemLinks.Count; i++)
|
|
{
|
|
allpopupMenu.ItemLinks[i].BeginGroup = true;//设置分割条
|
|
allpopupMenu.ItemLinks[i].Item.ItemClick += OnAllItem_ItemClick;
|
|
}
|
|
}
|
|
#endregion
|
|
#region 初始化左侧表格
|
|
private void InitLeftGrid()
|
|
{
|
|
this.leftGridView.OptionsBehavior.Editable = false;//禁编
|
|
this.leftGridView.OptionsFind.FindNullPrompt = "请输入查询字符";
|
|
this.leftGridView.OptionsFind.ShowClearButton = true;
|
|
this.leftGridView.OptionsFind.ShowCloseButton = false;
|
|
this.leftGridView.OptionsFind.ShowFindButton = false;
|
|
this.leftGridView.OptionsFind.AlwaysVisible = true;
|
|
this.leftGridView.OptionsFind.FindMode = DevExpress.XtraEditors.FindMode.Always;
|
|
GridAddCheckBox(this.leftGridView);
|
|
BindCustomDrawRowIndicator(this.leftGridView);
|
|
SelectRowChangeBackColor(this.leftGridView);
|
|
DataTable colCaptionTab = new DataTable();
|
|
colCaptionTab.Columns.Add("sysName");
|
|
colCaptionTab.Columns.Add("userName");
|
|
foreach (GridColumn gridColumn in this.ParentGridEx.GridView.VisibleColumns)
|
|
{
|
|
if (colCaptionTab.Select(string.Format("sysName='{0}'", gridColumn.FieldName)).Length == 0)
|
|
{
|
|
DataRow newRow = colCaptionTab.NewRow();
|
|
newRow["sysName"] = gridColumn.FieldName;
|
|
newRow["userName"] = gridColumn.Caption;
|
|
colCaptionTab.Rows.Add(newRow);
|
|
}
|
|
}
|
|
this.leftGridView.Columns["userName"].Width = this.panel_ALL.Width / 10 * 6;
|
|
this.leftGridView.GetVisibleColumn(0).Width = 40;
|
|
this.leftGridControl.DataSource = colCaptionTab;
|
|
this.leftGridView.DoubleClick += new EventHandler(OnLeftGridView_DoubleClick);
|
|
this.leftGridView.MouseMove += new MouseEventHandler(OnLeftGridView_MouseMove);
|
|
}
|
|
#endregion
|
|
#region 初始化数据展示表格
|
|
private void InitShowDataGrid()
|
|
{
|
|
this.gcMain.GridView.OptionsView.ShowGroupPanel = false;
|
|
this.gcMain.GridView.OptionsView.ShowFooter = true;
|
|
this.gcMain.GridView.OptionsBehavior.Editable = false;//禁编
|
|
this.gcMain.SetReadOnlyColumns(this.ParentGridEx.InitGridColumsTab);
|
|
this.gcMain.GridControl.DataSource = source;
|
|
//this.gcMain.GridView.BestFitColumns();
|
|
this.gcMainColumns = this.gcMain.GridView.VisibleColumns.ToList();
|
|
this.gcMain.GridView.DoubleClick += new EventHandler(OnGridView_DoubleClick);
|
|
//this.gridControlShowData.Tag = source;
|
|
//BindCustomDrawRowIndicator(this.gridView);
|
|
//SelectRowChangeBackColor(this.gridView);
|
|
}
|
|
|
|
private void GridView_RowStyle(object sender, RowStyleEventArgs e)
|
|
{
|
|
if (e.RowHandle == 3)
|
|
{
|
|
e.Appearance.ForeColor = Color.Red;
|
|
}
|
|
if (e.RowHandle == 4)
|
|
{
|
|
e.Appearance.BackColor = Color.Blue;
|
|
}
|
|
}
|
|
#endregion
|
|
#region 刷新构建数据展示表格列
|
|
private void InitShowDataGridColumns(DataTable table)
|
|
{
|
|
try
|
|
{
|
|
if (table == this.source)
|
|
{
|
|
foreach (GridColumn col in this.gcMainColumns)
|
|
{
|
|
col.VisibleIndex = this.gcMainColumns.IndexOf(col);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
List<GridColumn> removeCols = this.gcMain.GridView.Columns.Where(n => n.FieldName.StartsWith("GroupResult$")).ToList();
|
|
GridColumn[] gridColumns = this.gcMain.GridView.Columns.Where(n => table.Columns.Contains(n.FieldName) && !n.FieldName.StartsWith("GroupResult$")).ToArray();
|
|
DataColumn[] resultCols = table.Columns.Cast<DataColumn>().Where(n => n.ColumnName.StartsWith("GroupResult$")).ToArray();
|
|
foreach (GridColumn col in removeCols)//移除所有统计列
|
|
{
|
|
this.gcMain.GridView.Columns.Remove(col);
|
|
}
|
|
foreach (GridColumn col in this.gcMainColumns)
|
|
{
|
|
if (!gridColumns.Contains(col))
|
|
{
|
|
col.Visible = false;
|
|
}
|
|
else
|
|
{
|
|
col.Visible = true;
|
|
}
|
|
}
|
|
string formatString = !string.IsNullOrEmpty(SystemInfo.Instance.GridSiftFormatString) ? $"{{{SystemInfo.Instance.GridSiftFormatString}}}" : "{0:#,##0.00}";
|
|
foreach (DataColumn resultCol in resultCols)
|
|
{
|
|
GridColumn gridColumn = new GridColumn();
|
|
gridColumn.FieldName = resultCol.ColumnName;
|
|
gridColumn.Caption = resultCol.Caption;
|
|
gridColumn.DisplayFormat.FormatType = FormatType.Numeric;
|
|
gridColumn.DisplayFormat.FormatString = formatString;
|
|
gridColumn.Visible = true;
|
|
gridColumn.Summary.AddRange(new GridSummaryItem[] { new GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, gridColumn.FieldName, formatString) });
|
|
this.gcMain.GridView.GroupSummary.AddRange(new GridSummaryItem[] { new GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, gridColumn.FieldName, null, formatString) });
|
|
this.gcMain.GridView.Columns.Add(gridColumn);
|
|
}
|
|
}
|
|
this.gcMain.GridControl.DataSource = table;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 初始化明细表格
|
|
private void InitDetailGrid()
|
|
{
|
|
this.detailGrid.GridView.OptionsView.ShowGroupPanel = false;
|
|
this.detailGrid.GridView.OptionsView.ShowFooter = true;
|
|
this.detailGrid.GridView.OptionsBehavior.Editable = false;//禁编
|
|
this.detailGrid.SetReadOnlyColumns(this.ParentGridEx.InitGridColumsTab);
|
|
this.detailGrid.GridView.RowStyle += GridView_RowStyle;
|
|
//this.detailGrid.GridView.Columns.AddRange(this.ParentGridEx.GridView.Columns.ToArray());
|
|
this.detailGrid.GridView.BestFitColumns();
|
|
}
|
|
#endregion
|
|
#region 获取分组行列名
|
|
private List<string> GetGroupRowList()
|
|
{
|
|
List<string> groups = new List<string>();
|
|
foreach (System.Windows.Forms.Control item in this.pl_groupByRow.Controls)
|
|
{
|
|
DragItem dragItem = item as DragItem;
|
|
groups.Add(dragItem.dragItemModel.name);
|
|
}
|
|
return groups;
|
|
}
|
|
#endregion
|
|
#region 获取分组列列名
|
|
private List<string> GetGroupColList()
|
|
{
|
|
List<string> groups = new List<string>();
|
|
foreach (System.Windows.Forms.Control item in this.pl_GroupByCol.Controls)
|
|
{
|
|
DragItem dragItem = item as DragItem;
|
|
groups.Add(dragItem.dragItemModel.name);
|
|
}
|
|
return groups;
|
|
}
|
|
#endregion
|
|
#region 获取统计列数据
|
|
private List<TargetModel> GetTargetModelList()
|
|
{
|
|
List<TargetModel> targets = new List<TargetModel>();
|
|
foreach (System.Windows.Forms.Control item in this.pl_Result.Controls)
|
|
{
|
|
DragItem dragItem = item as DragItem;
|
|
TargetModel targetModel = new TargetModel();
|
|
targetModel.name = dragItem.dragItemModel.name;
|
|
targetModel.oper = dragItem.dragItemModel.oper;
|
|
targets.Add(targetModel);
|
|
}
|
|
return targets;
|
|
}
|
|
#endregion
|
|
#region 根据方案类加载方案选择数据
|
|
/// <summary>
|
|
/// <para>说明:根据方案类加载方案选择数据</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-03</para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// </summary>
|
|
private void LoadProject(GridSiftProjectModel projectModel)
|
|
{
|
|
try
|
|
{
|
|
this.BtnClear.PerformClick();
|
|
DataTable dataTable = this.leftGridControl.DataSourceTable();
|
|
if (projectModel.Groups != null && projectModel.Groups.Count > 0)
|
|
{
|
|
List<DataRow> dataRows = new List<DataRow>();
|
|
foreach (string group in projectModel.Groups)
|
|
{
|
|
DataRow dataRow = dataTable.Select().Where(n => (n["sysName"] + "").Equals(group)).FirstOrDefault();
|
|
if (dataRow != null)
|
|
{
|
|
dataRows.Add(dataRow);
|
|
}
|
|
}
|
|
IDataObject data = new DataObject();
|
|
data.SetData(typeof(DataRow[]), dataRows.ToArray());
|
|
DragEventArgs e = new DragEventArgs(data, 0, 0, 0, DragDropEffects.None, DragDropEffects.None);
|
|
OnDragEnter(this.pl_groupByRow, e);
|
|
OnDragDrop(this.pl_groupByRow, e);
|
|
//foreach (string group in projectModel.Groups)
|
|
//{
|
|
// DragItem dragItem = this.DragItemList.Where(n => n.dragItemModel.name.Equals(group)).FirstOrDefault();
|
|
// if (dragItem != null)
|
|
// {
|
|
// //startDrag(dragItem);
|
|
// IDataObject data = new DataObject();
|
|
// data.SetData(typeof(DataColumn), dragItem.Tag);
|
|
// DragEventArgs e = new DragEventArgs(data, 0, 0, 0, DragDropEffects.None, DragDropEffects.None);
|
|
// OnDragEnter(this.pl_groupByRow, e);
|
|
// OnDragDrop(this.pl_groupByRow, e);
|
|
// }
|
|
//}
|
|
}
|
|
if (projectModel.Cols != null && projectModel.Cols.Count > 0)
|
|
{
|
|
List<DataRow> dataRows = new List<DataRow>();
|
|
foreach (string col in projectModel.Cols)
|
|
{
|
|
DataRow dataRow = dataTable.Select().Where(n => (n["sysName"] + "").Equals(col)).FirstOrDefault();
|
|
if (dataRow != null)
|
|
{
|
|
dataRows.Add(dataRow);
|
|
}
|
|
}
|
|
IDataObject data = new DataObject();
|
|
data.SetData(typeof(DataRow[]), dataRows.ToArray());
|
|
DragEventArgs e = new DragEventArgs(data, 0, 0, 0, DragDropEffects.None, DragDropEffects.None);
|
|
OnDragEnter(this.pl_GroupByCol, e);
|
|
OnDragDrop(this.pl_GroupByCol, e);
|
|
//foreach (string col in projectModel.Cols)
|
|
//{
|
|
// DragItem dragItem = this.DragItemList.Where(n => n.dragItemModel.name.Equals(col)).FirstOrDefault();
|
|
// if (dragItem != null)
|
|
// {
|
|
// //startDrag(dragItem);
|
|
// IDataObject data = new DataObject();
|
|
// data.SetData(typeof(DataColumn), dragItem.Tag);
|
|
// DragEventArgs e = new DragEventArgs(data, 0, 0, 0, DragDropEffects.None, DragDropEffects.None);
|
|
// OnDragEnter(this.pl_GroupByCol, e);
|
|
// OnDragDrop(this.pl_GroupByCol, e);
|
|
// }
|
|
//}
|
|
}
|
|
if (projectModel.Targets != null && projectModel.Targets.Count > 0)
|
|
{
|
|
foreach (TargetModel targetModel in projectModel.Targets)
|
|
{
|
|
List<DataRow> dataRows = new List<DataRow>();
|
|
DataRow dataRow = dataTable.Select().Where(n => (n["sysName"] + "").Equals(targetModel.name)).FirstOrDefault();
|
|
if (dataRow != null)
|
|
{
|
|
dataRows.Add(dataRow);
|
|
}
|
|
IDataObject data = new DataObject();
|
|
data.SetData(typeof(DataRow[]), dataRows.ToArray());
|
|
DragEventArgs e = new DragEventArgs(data, 0, 0, 0, DragDropEffects.None, DragDropEffects.None);
|
|
OnDragEnter(this.pl_Result, e);
|
|
OnDragDrop(this.pl_Result, e);
|
|
DragItem resuleDragItem = this.pl_Result.Controls.Cast<DragItem>().Where(n => n.dragItemModel.name.Equals(targetModel.name) && string.IsNullOrEmpty(n.dragItemModel.oper)).FirstOrDefault();
|
|
if (resuleDragItem != null)
|
|
{
|
|
this.rightClickItem = resuleDragItem;
|
|
BarItemLink operItemLink = this.popupMenu.ItemLinks.Where(n => n.Item.Name.Equals(targetModel.oper)).FirstOrDefault();
|
|
ItemClickEventArgs itemClickEventArgs = new ItemClickEventArgs(operItemLink.Item, operItemLink);
|
|
OnItem_ItemClick(null, itemClickEventArgs);
|
|
}
|
|
}
|
|
//foreach (TargetModel targetModel in projectModel.Targets)
|
|
//{
|
|
// DragItem dragItem = this.DragItemList.Where(n => n.dragItemModel.name.Equals(targetModel.name)).FirstOrDefault();
|
|
// if (dragItem != null)
|
|
// {
|
|
// //startDrag(dragItem);
|
|
// IDataObject data = new DataObject();
|
|
// data.SetData(typeof(DataColumn), dragItem.Tag);
|
|
// DragEventArgs e = new DragEventArgs(data, 0, 0, 0, DragDropEffects.None, DragDropEffects.None);
|
|
// OnDragEnter(this.pl_Result, e);
|
|
// OnDragDrop(this.pl_Result, e);
|
|
// DragItem resuleDragItem = this.pl_Result.Controls.Cast<DragItem>().Where(n => n.dragItemModel.name.Equals(targetModel.name) && string.IsNullOrEmpty(n.dragItemModel.oper)).FirstOrDefault();
|
|
// if (resuleDragItem != null)
|
|
// {
|
|
// this.rightClickItem = resuleDragItem;
|
|
// BarItemLink operItemLink = this.popupMenu.ItemLinks.Where(n => n.Item.Name.Equals(targetModel.oper)).FirstOrDefault();
|
|
// ItemClickEventArgs itemClickEventArgs = new ItemClickEventArgs(operItemLink.Item, operItemLink);
|
|
// OnItem_ItemClick(null, itemClickEventArgs);
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 初始化方案
|
|
/// <summary>
|
|
/// <para>说明:初始化方案下拉按钮</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2022-10-03</para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// </summary>
|
|
private void InitCheckProject()
|
|
{
|
|
try
|
|
{
|
|
if (!BaseImpl.HasExistsTable("p_SysModuleSchemeTab"))
|
|
{
|
|
string createSqlStr = @"create table p_SysModuleSchemeTab(
|
|
id int primary key identity,
|
|
name varchar(100),
|
|
moduleId varchar(100),
|
|
operatorid int,
|
|
isPub int,
|
|
Querys varchar(max),
|
|
Cols varchar(max),
|
|
Groups varchar(max),
|
|
Targets varchar(max),
|
|
)";
|
|
SqlHelper.ExecuteNonQuery(createSqlStr);
|
|
}
|
|
this.checkProject.Properties.Items.Clear();
|
|
this.projectDic.Clear();
|
|
this.checkProject.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
|
|
this.checkProject.Properties.AllowNullInput = DefaultBoolean.True;
|
|
this.checkProject.Properties.NullText = "请选择方案";
|
|
ImageComboBoxItem defaultItem = new ImageComboBoxItem("默认方案");
|
|
this.checkProject.Properties.Items.Add(defaultItem);
|
|
this.projectDic.Add("默认方案", 0);
|
|
string sqlStr = @"select name,isPub from p_SysModuleSchemeTab where moduleId = '{0}' and operatorid = '{1}' and isPub = '0'
|
|
union all select name,isPub from p_SysModuleSchemeTab where moduleId = '{0}' and isPub = '1'";
|
|
DataTable sourceTab = SqlHelper.ExecuteDataTable(string.Format(sqlStr, this.CustomColumKey, ERPInfo.Instance.UserId));
|
|
ImageCollection images = new ImageCollection();
|
|
Image lockedImag = Resources.locked;
|
|
images.AddImage(lockedImag);
|
|
this.checkProject.Properties.SmallImages = images;
|
|
for (int i = 0; i < sourceTab.Rows.Count; i++)
|
|
{
|
|
DataRow item = sourceTab.Rows[i];
|
|
string isPub = item["isPub"] + "";
|
|
ImageComboBoxItem imageItem = new ImageComboBoxItem(item["name"] + "");
|
|
if (!string.IsNullOrEmpty(isPub) && !isPub.Equals("1"))
|
|
{
|
|
imageItem.ImageIndex = 0;
|
|
}
|
|
this.checkProject.Properties.Items.Add(imageItem);
|
|
this.projectDic.Add(item["name"] + "", i + 1);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageUtil.Show(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 初始化方案选择
|
|
private void InitProjectSelect()
|
|
{
|
|
if (!BaseImpl.HasExistsTable("p_SysModuleSchemeLogTab"))
|
|
{
|
|
string createSqlStr = @"create table p_SysModuleSchemeLogTab(
|
|
id int primary key identity,
|
|
moduleId varchar(100),
|
|
operatorid int,
|
|
projectid int,
|
|
)";
|
|
SqlHelper.ExecuteNonQuery(createSqlStr);
|
|
}
|
|
DataTable dataTable = SqlHelper.ExecuteDataTable(string.Format("select * from p_SysModuleSchemeLogTab where operatorid='{0}' and moduleId='{1}'", ERPInfo.Instance.UserId, this.CustomColumKey));
|
|
if (dataTable.Rows.Count > 0)
|
|
{
|
|
DataRow dataRow = dataTable.Rows[0];
|
|
string projectId = dataRow["projectid"] + "";
|
|
if (string.IsNullOrEmpty(projectId))
|
|
{
|
|
this.checkProject.SelectedIndex = 0;
|
|
}
|
|
else
|
|
{
|
|
string projectName = SqlHelper.ExecuteScalar(string.Format("select name from p_SysModuleSchemeTab where id = '{0}'", projectId)) + "";
|
|
if (!string.IsNullOrEmpty(projectName))
|
|
{
|
|
this.checkProject.SelectedIndex = this.projectDic[projectName];
|
|
}
|
|
else
|
|
{
|
|
this.checkProject.SelectedIndex = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region 表格第一列添加复选框
|
|
/// <summary>
|
|
/// <para>说明:表格第一列添加复选框</para>
|
|
/// <para>创建人:唐德馨</para>
|
|
/// <para>创建日期:2021-07-08 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="gridColumn">The grid columnFilterPopupChecke.</param>
|
|
public static void GridAddCheckBox(GridView gridview)
|
|
{
|
|
gridview.OptionsSelection.MultiSelect = true;
|
|
gridview.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect;
|
|
gridview.OptionsSelection.EnableAppearanceFocusedCell = false;
|
|
gridview.OptionsBehavior.EditorShowMode = EditorShowMode.MouseDown;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 饼图重新赋值
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void CmMain_CustomDrawSeriesPoint(object sender, CustomDrawSeriesPointEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
e.LabelText = e.LegendText;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|