C# DataGridView 绑定List  無法排序問題解決方案

Posted LuoCore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# DataGridView 绑定List  無法排序問題解決方案相关的知识,希望对你有一定的参考价值。

 /// <summary>
    /// 自定义绑定列表类
    /// </summary>
    /// <typeparam name="T">列表对象类型</typeparam>
    public class BindingCollection<T> : BindingList<T>
    {
        private bool isSorted;
        private PropertyDescriptor sortProperty;
        private ListSortDirection sortDirection;
        /// <summary>
        /// 构造函数
        /// </summary>
        public BindingCollection() : base()
        {
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="list">IList类型的列表对象</param>
        public BindingCollection(IList<T> list) : base(list)
        {
        }
        /// <summary>
        /// 自定义排序操作
        /// </summary>
        /// <param name="property"></param>
        /// <param name="direction"></param>
        protected override void ApplySortCore(PropertyDescriptor property, ListSortDirection direction)
        {
            List<T> items = this.Items as List<T>;
            if (items != null)
            {
                ObjectPropertyCompare<T> pc = new ObjectPropertyCompare<T>(property, direction);
                items.Sort(pc);
                isSorted = true;
            }
            else
            {
                isSorted = false;
            }
            sortProperty = property;
            sortDirection = direction;
            this.OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
        }
        /// <summary>
        /// 获取一个值,指示列表是否已排序
        /// </summary>
        protected override bool IsSortedCore
        {
            get
            {
                return isSorted;
            }
        }
        /// <summary>
        /// 获取一个值,指示列表是否支持排序
        /// </summary>
        protected override bool SupportsSortingCore
        {
            get
            {
                return true;
            }
        }
        /// <summary>
        /// 获取一个只,指定类别排序方向
        /// </summary>
        protected override ListSortDirection SortDirectionCore
        {
            get
            {
                return sortDirection;
            }
        }
        /// <summary>
        /// 获取排序属性说明符
        /// </summary>
        protected override PropertyDescriptor SortPropertyCore
        {
            get
            {
                return sortProperty;
            }
        }
        /// <summary>
        /// 移除默认实现的排序
        /// </summary>
        protected override void RemoveSortCore()
        {
            isSorted = false;
            this.OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
        }
    }

 

以上是关于C# DataGridView 绑定List  無法排序問題解決方案的主要内容,如果未能解决你的问题,请参考以下文章

Android_Fragment

对称加密算法和非对称加密算法

linux操作系统及常见命令

css3-动画(animation)

vue+vuex+axios从webpack-server获取模拟数据存入vuex并取回展示到页面

深度学习-机器视觉学习路线