| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using Core.Mes.Client.Comm.Server;
- using Core.Mes.Client.Comm.Tool;
- using CoreFS.CA06;
- using Infragistics.Win.UltraWinEditors;
- using Infragistics.Win.UltraWinGrid;
- using Infragistics.Win.UltraWinMaskedEdit;
- using Infragistics.Win;
- using System.Collections;
- using System.Text.RegularExpressions;
- using System.ComponentModel;
- using System.Runtime.CompilerServices;
- using System.Windows.Forms;
- using NPOI.SS.Formula.Functions;
- namespace Core.StlMes.Client.PlnSaleOrd.BaseMethod
- {
- public class BaseHelper
- {
- public static string[] SetData(string methodId, object[] param, OpeBase ob)
- {
- CoreClientParam ccp = new CoreClientParam();
- ccp.ServerName = methodId.Substring(0, methodId.LastIndexOf("."));
- ccp.MethodName = methodId.Substring(methodId.LastIndexOf(".") + 1);
- ccp.ServerParams = param;
- ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
- if (ccp.ReturnCode == -1)
- {
- return null;
- }
- else
- {
- string[] strArray = new string[2];
- strArray[0] = ccp.ReturnObject.ToString();
- strArray[1] = ccp.ReturnInfo;
- return strArray;
- }
- }
- /// <summary>
- /// 查询选择记录
- /// </summary>
- /// <typeparam name="T">类名</typeparam>
- /// <param name="ug">Grid</param>
- /// <param name="columns">列</param>
- /// <param name="value">对应值</param>
- /// <returns></returns>
- public static ArrayList GetRows<T>(UltraGrid ug, string columns, string value)
- {
- try { ug.UpdateData(); }
- catch (Exception) { return null; }
- IQueryable<UltraGridRow> chcRows = ug.Rows.AsQueryable().Where(a => a.GetValue(columns) == value);
- if (chcRows == null || chcRows.Count() == 0)
- {
- return null;
- }
- ArrayList list = new ArrayList();
- foreach (UltraGridRow ugr in chcRows)
- {
- T t = (T)ugr.ListObject;
- list.Add(t);
- }
- return list;
- }
- /// <summary>
- /// 控制行
- /// </summary>
- /// <param name="row"></param>
- public static void ControlCellEdit(UltraGridRow row)
- {
- foreach (UltraGridCell cell in row.Cells)
- {
- if (cell.Column.CellAppearance.BackColor == Color.FromArgb(255, 255, 128))
- {
- if (row.Cells["CHC"].Value.ToString() == "True")
- {
- cell.Activation = Activation.AllowEdit;
- }
- else
- {
- cell.Activation = Activation.ActivateOnly;
- }
- }
- else
- {
- if (!cell.Column.Key.Equals("CHC"))
- {
- cell.Activation = Activation.ActivateOnly;
- }
- }
- }
- }
- /// <summary>
- /// UltraGrid可读(非主从结构)
- /// </summary>
- /// <param name="ugr">UltraGrid</param>
- /// <param name="keys">可编辑列</param>
- public static void setOtherColumnReadOnly(UltraGrid ugr, string[] keys)
- {
- if (keys == null || keys.Length == 0)
- {
- foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
- {
- ugc.CellActivation = Activation.ActivateOnly;
- }
- }
- else
- {
- keys.ToArray();
- foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
- {
- if (!keys.Contains(ugc.Key))
- {
- ugc.CellActivation = Activation.ActivateOnly;
- }
- }
- }
- }
- /// <summary>
- /// UltraGrid可读(主从结构)
- /// </summary>
- /// <param name="ugr"></param>
- /// <param name="keys"></param>
- public static void setColumnReadOnly(UltraGrid ugr, string[] keys)
- {
- keys.ToArray();
- foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
- {
- if (!keys.Contains(ugc.Key))
- {
- ugc.CellActivation = Activation.ActivateOnly;
- }
- }
- foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[1].Columns)
- {
- if (!keys.Contains(ugc.Key))
- {
- ugc.CellActivation = Activation.ActivateOnly;
- }
- }
- }
- /// <summary>
- /// 设置列背景颜色
- /// </summary>
- /// <param name="ugr">UltraGrid</param>
- /// <param name="columns">列数组</param>
- public static void setColumnBackColor(UltraGrid ugr, String[] columns)
- {
- for (int i = 0; i < columns.Length; i++)
- {
- ugr.DisplayLayout.Bands[0].Columns[columns[i]].CellAppearance.BackColor = Color.FromArgb(255, 255, 128);
- }
- }
- /// <summary>
- /// 设置列背景颜色
- /// </summary>
- /// <param name="ugr">UltraGrid</param>
- /// <param name="columns">列数组</param>
- public static void setColumnBackColor2(UltraGrid ugr, String[] columns)
- {
- for (int i = 0; i < columns.Length; i++)
- {
- ugr.DisplayLayout.Bands[0].Columns[columns[i]].CellAppearance.BackColor = Color.FromArgb(255, 0, 0);
- }
- }
- /// <summary>
- /// 设置列字段显示位置在右
- /// </summary>
- /// <param name="ug">UltraGrid</param>
- /// <param name="columnsKeys">要设置的列</param>
- public static void InitCellPosition(UltraGrid ug, string[] columnsKeys)
- {
- if (columnsKeys == null || columnsKeys.Length == 0)
- {
- return;
- }
- columnsKeys.ToArray();
- foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns)
- {
- if (columnsKeys.Contains(ugc.Key.ToString()))
- {
- ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
- }
- }
- }
- /// <summary>
- /// 设置列字段显示位置在右
- /// </summary>
- /// <param name="ug">UltraGrid从表</param>
- /// <param name="columnsKeys">要设置的列</param>
- public static void InitCellPositionC(UltraGrid ug, string[] columnsKeys)
- {
- columnsKeys.ToArray();
- foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[1].Columns)
- {
- if (columnsKeys.Contains(ugc.Key.ToString()))
- {
- ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
- }
- }
- }
- /// <summary>
- /// 列求和
- /// </summary>
- /// <param name="ug">UltraGrid</param>
- /// <param name="columnKeys">列数组</param>
- public static void GridColumnSum(UltraGrid ug, string[] columnKeys, string[] descritions)
- {
- if (columnKeys.Length == 0 || descritions.Length != columnKeys.Length)
- {
- return;
- }
- for (int i = 0; i < columnKeys.Length; i++)
- {
- SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn);
- summary.DisplayFormat = "{0}" + descritions[i];
- summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
- }
- }
- /// <summary>
- /// 列求和
- /// </summary>
- /// <param name="ug"></param>
- /// <param name="columnKeys"></param>
- public static void GridColumnSum(UltraGrid ug, string[] columnKeys)
- {
- if (columnKeys.Length == 0)
- {
- return;
- }
- for (int i = 0; i < columnKeys.Length; i++)
- {
- SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn);
- summary.DisplayFormat = "{0:N3}";
- summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
- }
- }/// <summary>
- /// 列求和
- /// </summary>
- /// <param name="ug">UltraGrid</param>
- /// <param name="columnKeys">列数组(支)</param>
- public static void GridColumnCount(UltraGrid ug, string[] columnKeys)
- {
- if (columnKeys.Length == 0)
- {
- return;
- }
- for (int i = 0; i < columnKeys.Length; i++)
- {
- SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn);
- summary.DisplayFormat = "{0:N0}";
- summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
- }
- }
- /// <summary>
- /// 设置UltraGrid行颜色
- /// </summary>
- /// <param name="ug">UltraGrid</param>
- /// <param name="columnKeys">列</param>
- /// <param name="values">值</param>
- /// <param name="color">颜色</param>
- public static void SetUltraGridRowColor(UltraGrid ug, string[] columnKeys, string[] values, Color color)
- {
- if (ug.Rows.Count == 0 || columnKeys.Length == 0 || values.Length == 0 || color == null || values.Length != columnKeys.Length)
- {
- return;
- }
- foreach (UltraGridRow ugr in ug.Rows)
- {
- Boolean flag = true;
- for (int i = 0; i < columnKeys.Length; i++)
- {
- if (!ugr.Cells[columnKeys[i]].Value.ToString().Equals(values[i]))
- {
- flag = false;
- }
- }
- if (flag)
- {
- ugr.Appearance.BackColor = color;
- }
- }
- }
- /// <summary>
- /// 合并单元格
- /// </summary>
- /// <param name="ug"></param>
- /// <param name="columnKeys"></param>
- public static void MergedCell(UltraGrid ug, string[] columnKeys)
- {
- if (columnKeys.Length == 0)
- {
- return;
- }
- ug.DisplayLayout.Override.MergedCellStyle = MergedCellStyle.Never;
- for (int i = 0; i < columnKeys.Length; i++)
- {
- ug.DisplayLayout.Bands[0].Columns[columnKeys[i]].MergedCellStyle = MergedCellStyle.Always;
- }
- }
- /// <summary>
- /// 设置ULTRAGIRD列的颜色
- /// </summary>
- /// <param name="ug">ultragrid</param>
- /// <param name="arr">列Key</param>
- /// <param name="color">颜色</param>
- public static void setUltraGridColumnColor(UltraGrid ug, string[] arr, Color color)
- {
- if (arr == null || arr.Length == 0 || ug == null)
- {
- return;
- }
- arr.ToArray();
- foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns)
- {
- if (arr.Contains(ugc.Key.ToString()))
- {
- ugc.CellAppearance.BackColor = color;
- }
- }
- }
- /// <summary>
- /// 设置列显示位数
- /// </summary>
- /// <param name="ug"></param>
- /// <param name="arr"></param>
- public static void setUltraGridColumnMaxInput(UltraGrid ug, string[] arr)
- {
- if (ug == null || arr == null || arr.Length == 0)
- {
- return;
- }
- arr.ToArray();
- foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns)
- {
- if (arr.Contains(ugc.Key.ToString()))
- {
- ugc.MaskDisplayMode = MaskMode.IncludeLiterals;
- ugc.MaskInput = "{LOC}-n,nnn,nnn.nnn";
- }
- }
- }
- /// <summary>
- /// 设置列显示位数
- /// </summary>
- /// <param name="ug"></param>
- /// <param name="arr"></param>
- public static void setUltraGridColumnBits(UltraGrid ug, string[] arr)
- {
- if (ug == null || arr == null || arr.Length == 0)
- {
- return;
- }
- arr.ToArray();
- foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns)
- {
- if (arr.Contains(ugc.Key.ToString()))
- {
- ugc.MaskDisplayMode = MaskMode.IncludeLiterals;
- ugc.MaskInput = "{LOC}-nn,nnn,nnn";
- }
- }
- }
- /// <summary>
- /// 列绑定下拉框
- /// </summary>
- /// <param name="uce">下拉框</param>
- /// <param name="column">列名</param>
- /// <param name="column">行</param>
- public static void BindColumn(UltraComboEditor uce, string column, UltraGridBand ugb)
- {
- ugb.Columns[column].EditorComponent = uce;
- ugb.Columns[column].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
- }
- /// <summary>
- /// 初始化下拉框
- /// </summary>
- /// <param name="uce">下拉框</param>
- /// <param name="methodID">方法名</param>
- /// <param name="showValue">显示值</param>
- /// <param name="hiddenValue">隐藏值</param>
- /// <param name="isNull">是否增加空行</param>
- /// <param name="ob">OB对象</param>
- public static void NitializeDropDownBox(UltraComboEditor uce, string methodID, string showValue, string hiddenValue, Boolean isNull, OpeBase ob)
- {
- DataTable dt = ServerHelper.GetData(methodID, new Object[] { }, ob);
- if (dt != null && dt.Rows.Count > 0 && isNull)
- {
- DataRow dr = dt.NewRow();
- for (int i = 0; i < dt.Columns.Count; i++)
- {
- dr[i] = "";
- }
- dt.Rows.InsertAt(dr, 0);
- }
- uce.DataSource = dt;
- uce.DisplayMember = showValue;
- uce.ValueMember = hiddenValue;
- ClsBaseInfo.SetComboItemHeight(uce);
- }
- /// <summary>
- /// 初始化下拉框
- /// </summary>
- /// <param name="uce">下拉框</param>
- /// <param name="methodID">方法名</param>
- /// <param name="methodID">参数</param>
- /// <param name="showValue">显示值</param>
- /// <param name="hiddenValue">隐藏值</param>
- /// <param name="isNull">是否增加空行</param>
- /// <param name="ob">OB对象</param>
- public static void NitializeDropDownBox(UltraComboEditor uce, string methodID, Object[] param, string showValue, string hiddenValue, Boolean isNull, OpeBase ob)
- {
- DataTable dt = ServerHelper.GetData(methodID, param, ob);
- if (dt != null && dt.Rows.Count > 0 && isNull)
- {
- DataRow dr = dt.NewRow();
- for (int i = 0; i < dt.Columns.Count; i++)
- {
- dr[i] = "";
- }
- dt.Rows.InsertAt(dr, 0);
- }
- uce.DropDownListWidth = -1;
- uce.DropDownStyle = DropDownStyle.DropDownList;
- uce.DataSource = dt;
- uce.DisplayMember = showValue;
- uce.ValueMember = hiddenValue;
- ClsBaseInfo.SetComboItemHeight(uce);
- }
- private Object setObjectByDataRow(Object obj, DataRow dr)
- {
- System.Reflection.PropertyInfo[] properties = obj.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
- foreach (System.Reflection.PropertyInfo item in properties)
- {
- string name = item.Name;
- string value = item.GetValue(obj, null).ToString();
- for (int i = 0; i < dr.Table.Columns.Count; i++)
- {
- if (dr.Table.Columns[i].ColumnName.ToString().Equals(name))
- {
- item.SetValue(obj, dr[i].ToString(), null);
- }
- }
- }
- return obj;
- }
- private Object setObjectByDataTable(Object obj, DataTable dt)
- {
- System.Reflection.PropertyInfo[] properties = obj.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
- foreach (System.Reflection.PropertyInfo item in properties)
- {
- string name = item.Name;
- string value = item.GetValue(obj, null).ToString();
- foreach (DataRow dr in dt.Rows)
- {
- {
- if (dr[0].ToString().Equals(name))
- item.SetValue(obj, dr[1].ToString(), null);
- }
- }
- }
- return obj;
- }
- /// <summary>
- /// 禁止排序
- /// </summary>
- /// <param name="ugr"></param>
- public static void ForbidSort(UltraGrid ugr)
- {
- foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
- {
- ugc.SortIndicator = SortIndicator.Disabled;
- }
- }
- /// <summary>
- /// 用于初始化F1功能加字段问题
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="frm"></param>
- /// <param name="ug"></param>
- public static void SetGridColunmName<T>(FrmBase frm, UltraGrid ug)
- {
- System.Threading.Thread.Sleep(3000);
- if (!frm.IsDisposed)
- {
- EntityHelper.ShowGridCaption<T>(ug.DisplayLayout.Bands[0]);
- }
- }
- /// <summary>
- /// 设置列居中
- /// </summary>
- /// <param name="ug"></param>
- /// <param name="columnsKeys"></param>
- public static void InitCellPositionMiddle(UltraGrid ug, string[] columnsKeys)
- {
- columnsKeys.ToArray();
- foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns)
- {
- if (columnsKeys.Contains(ugc.Key.ToString()))
- {
- ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Center;
- }
- }
- }
- /// <summary>
- /// 激活行选中
- /// </summary>
- /// <param name="ug"></param>
- public static void SetRowChecked(UltraGrid ug)
- {
- foreach (UltraGridRow ugr in ug.Rows)
- {
- if (ugr.Activated)
- {
- ugr.Cells["CHC"].Value = true;
- }
- else
- {
- ugr.Cells["CHC"].Value = false;
- }
- }
- }
- /// <summary>
- /// 初始化下拉框(增强型)
- /// </summary>
- /// <param name="uce">下拉框</param>
- /// <param name="methodId">请求的服务</param>
- /// <param name="valueMember">值成员</param>
- /// <param name="textMember">显示成员</param>
- /// <param name="ob">ob对象</param>
- /// <param name="isEmpty">是否添加空行</param>
- public static void InitComboEditorNew(UltraComboEditor uce, string methodId, string valueMember, string textMember, OpeBase ob, bool isEmpty)
- {
- InitComboEditor(uce, methodId, valueMember, ob, isEmpty);
- uce.DisplayMember = textMember;
- }
- /// <summary>
- /// 初始化下拉框
- /// </summary>
- /// <param name="uce">下拉框</param>
- /// <param name="methodId">请求的服务</param>
- /// <param name="valueMember">值成员</param>
- /// <param name="ob">ob对象</param>
- /// <param name="isEmpty">是否有空行</param>
- public static void InitComboEditor(UltraComboEditor uce, string methodId, string valueMember, OpeBase ob, bool isEmpty)
- {
- DataTable dt = ServerHelper.GetData(methodId, null, ob);
- if (dt != null && dt.Rows.Count > 0)
- {
- if (isEmpty)
- {
- Object[] obj = new Object[] { "", "" };
- DataRow dr = dt.NewRow();
- dr.ItemArray = obj;
- dt.Rows.InsertAt(dr, 0);
- }
- uce.DataSource = dt;
- uce.ValueMember = valueMember;
- SetComboItemHeight(uce);
- }
- }
- /// <summary>
- /// 设置UltraComboEditor中的中文和非中文统一高度。
- /// </summary>
- /// <param name="cmb"></param>
- public static void SetComboItemHeight(UltraComboEditor cmb)
- {
- foreach (ValueListItem item in cmb.Items)
- {
- if (Regex.IsMatch(item.DisplayText, @"[\u4e00-\u9fa5]+"))
- {
- item.Appearance.FontData.SizeInPoints = 9.0F;
- }
- else
- {
- item.Appearance.FontData.SizeInPoints = 10.5F;
- }
- }
- }
- /// <summary>
- /// 将下拉框绑定到GRID列
- /// </summary>
- /// <param name="uce">下拉框(已经初始化完成)</param>
- /// <param name="ColumnName">列名</param>
- /// <param name="con">空间集合(每次只需填入this.Controls)</param>
- /// <param name="ug">GRID</param>
- /// <param name="i">GRID的第几层结构</param>
- public static void BindColumn(UltraComboEditor uce, string ColumnName, System.Windows.Forms.Control.ControlCollection con, UltraGrid ug, int i)
- {
- con.Add(uce);
- uce.Visible = false;
- ug.DisplayLayout.Bands[i].Columns[ColumnName].EditorComponent = uce;
- ug.DisplayLayout.Bands[i].Columns[ColumnName].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDown;
- SetComboItemHeight(uce);
- }
- /// <summary>
- /// 设置Grid可拖拽行, 设置拖拽前提条件,拖拽后的操作
- /// </summary>
- /// <param name="ug">待设置的Grid</param>
- /// <param name="action">拖拽后需要实现的业务</param>
- public static void SetGridDragDropRows(UltraGrid ug, Action<SelectedRowsCollection, int> action, Cursor myCursor)
- {
- ug.AllowDrop = true;
- ug.SelectionDrag += (sender, args) => { if (ug.Selected.Rows.Count > 0) ug.DoDragDrop(ug.Selected.Rows, DragDropEffects.Move); };
- ug.GiveFeedback += (sender, args) =>
- {
- //Cursor myCursor = new Cursor();
- //ug.Cursor = Cursors.Hand;
- args.UseDefaultCursors = false;
- ug.Cursor = myCursor;
- };
- ug.DragOver += (sender, args) =>
- {
- args.Effect = DragDropEffects.Move;
- UltraGrid grid = sender as UltraGrid;
- Point pointInGridCoords = grid.PointToClient(new Point(args.X, args.Y + 10));
- UIElement uieOver = ug.DisplayLayout.UIElement.ElementFromPoint(ug.PointToClient(new Point(args.X, args.Y + 10)));
- if (uieOver != null)
- {
- UltraGridRow ugrOver = uieOver.GetContext(typeof(UltraGridRow), true) as UltraGridRow;
- if (ugrOver != null) ug.ActiveRow = ugrOver;
- }
- if (pointInGridCoords.Y < 30)
- // 当拖动行到当前视图顶端,滑轮自动向上滚动.
- ug.ActiveRowScrollRegion.Scroll(RowScrollAction.LineUp);
- else if (pointInGridCoords.Y > grid.Height - 30)
- // 当拖动行到当前视图尾端,滑轮自动向下滚动.
- ug.ActiveRowScrollRegion.Scroll(RowScrollAction.LineDown);
- };
- ug.DragDrop += (sender, args) =>
- {
- ug.Cursor = Cursors.Default;
- UIElement uieOver = ug.DisplayLayout.UIElement.ElementFromPoint(ug.PointToClient(new Point(args.X, args.Y + 10)));
- UltraGridRow ugrOver = uieOver.GetContext(typeof(UltraGridRow), true) as UltraGridRow;
- if (ugrOver != null)
- {
- var dropIndex = ugrOver.HasParent() ? ugrOver.ParentRow.Index : ugrOver.Index;
- SelectedRowsCollection SelRows = args.Data.GetData(typeof(SelectedRowsCollection)) as SelectedRowsCollection;
- if (action != null)
- {
- action(SelRows, dropIndex);
- }
- else
- {
- foreach (UltraGridRow aRow in SelRows)
- {
- ug.Rows.Move(aRow, dropIndex);
- }
- }
- }
- };
- }
- /// <summary>
- /// 合并单元格统计
- /// </summary>
- public static void SetGroupBySum(UltraGrid ug, string[] columnKeys, string groupBy)
- {
- if (columnKeys.Length == 0)
- {
- return;
- }
- for (int i = 0; i < columnKeys.Length; i++)
- {
- SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(
- columnKeys[i],
- SummaryType.Custom,
- new StringSummaryCalculator(groupBy), // Custom summary calculator
- ug.DisplayLayout.Bands[0].Columns[columnKeys[i]],
- SummaryPosition.UseSummaryPositionColumn, null);
- summary.DisplayFormat = "{0:N3}";
- summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
- }
- }
- }
- class StringSummaryCalculator : ICustomSummaryCalculator
- {
- private string _summaryText = "";
- private string groupby = "";
- internal StringSummaryCalculator(string GroupBy)
- {
- groupby = GroupBy;
- }
- public void AggregateCustomSummary(SummarySettings summarySettings, UltraGridRow row)
- {
- }
- public void BeginCustomSummary(SummarySettings summarySettings, RowsCollection rowCollection)
- {
- string key = summarySettings.Key;
- var list = rowCollection.GroupBy(p => p.Cells[groupby].Value.ToString()).Select(p => p.LastOrDefault()).ToList();
- _summaryText = list.Sum(p => double.Parse(p.Cells[key].Value.ToString())).ToString();
- }
- public object EndCustomSummary(SummarySettings summarySettings, RowsCollection rowCollection)
- {
- return this._summaryText;
- }
- }
- }
|