| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- using DevExpress.XtraGrid.Columns;
- using DevExpress.XtraGrid.Views.Grid;
- using Ips.Library.Basic;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Ips.Library.DxpLib
- {
- public static class GridControlExtensions
- {
- public static void UseDefaultSettings(this GridView view, GridViewDefaultSetting setting = null)
- {
- if (setting == null) setting = new GridViewDefaultSetting();
- if (setting.Editable.HasValue)
- {
- view.OptionsBehavior.Editable = setting.Editable.Value;
- view.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDownFocused;
- }
- if (setting.MultiSelect.HasValue)
- view.OptionsSelection.MultiSelect = setting.MultiSelect.Value;
- if (setting.RowAlignLeft.HasValue)
- {
- view.Appearance.Row.Options.UseTextOptions = true;
- view.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
- }
- if (setting.DefaultEmptyDisplayText == true)
- view.CustomColumnDisplayText += View_CustomColumnDisplayText;
- if (setting.ShowRowNum)
- ShowRowNumber(view);
- }
- private static void View_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
- {
- if (e.DisplayText.IsNullOrWhitespace())
- {
- e.DisplayText = "--";
- }
- }
- public static void ShowRowNumber(this GridView gridView)
- {
- gridView.CustomDrawRowIndicator += (sender, e) =>
- {
- var gv = sender as GridView;
- if (gv == null || !e.Info.IsRowIndicator) return;
- e.Info.DisplayText = $"{e.RowHandle + 1}";
- };
- gridView.RowCountChanged += (sender, e) =>
- {
- var gv = sender as GridView;
- if (gv == null) return;
- gv.IndicatorWidth = gv.RowCount.ToString().Length * 12 + 10;
- };
- }
- public static T[] GetSelectRow<T>(this GridView gridView)
- {
- var selHandles = gridView.GetSelectedRows();
- var results = new T[selHandles.Length];
- for (int i = 0; i < results.Length; i++)
- {
- var result = (T)gridView.GetRow(selHandles[i]);
- results[i] = result;
- }
- return results;
- }
- public static T[] GetSelectRowCellValue<T>(this GridView gridView, GridColumn column)
- {
- var rowHandles = gridView.GetSelectedRows();
- T[] vals = new T[rowHandles.Length];
- for (int i = 0; i < rowHandles.Length; i++)
- {
- var val = (T)gridView.GetRowCellValue(rowHandles[i], column);
- vals[i] = val;
- }
- return vals;
- }
- public static T[] GetSelectRowCellValue<T>(this GridView gridView, string colName)
- {
- var rowHandles = gridView.GetSelectedRows();
- T[] vals = new T[rowHandles.Length];
- for (int i = 0; i < rowHandles.Length; i++)
- {
- var val = (T)gridView.GetRowCellValue(rowHandles[i], colName);
- vals[i] = val;
- }
- return vals;
- }
- public static int[] GetSelectDataIndexes(this GridView gridView)
- {
- var rowHandles = gridView.GetSelectedRows();
- int[] idxs = new int[rowHandles.Length];
- for (int i = 0; i < rowHandles.Length; i++)
- {
- var idx = gridView.GetDataSourceRowIndex(rowHandles[i]);
- idxs[i] = idx;
- }
- return idxs;
- }
- public static T[] GetVisibleRows<T>(this GridView gridView)
- {
- T[] res = new T[gridView.RowCount];
- for (int i = 0; i < gridView.RowCount; i++)
- {
- var rowHandle = gridView.GetVisibleRowHandle(i);
- var model = (T)gridView.GetRow(rowHandle);
- res[i] = model;
- }
- return res;
- }
- public static void RefreshFocuseRow(this GridView gridView)
- {
- if (gridView.FocusedRowHandle >= 0)
- {
- gridView.RefreshRow(gridView.FocusedRowHandle);
- }
- }
- }
- public class GridViewDefaultSetting
- {
- public bool? Editable { get; set; } = false;
- public bool? MultiSelect { get; set; } = true;
- public bool? RowAlignLeft { get; set; } = true;
- public bool? DefaultEmptyDisplayText { get; set; } = true;
- public bool ShowRowNum { get; set; } = false;
- }
- }
|