| 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;    }}
 |