为BindingList添加Sort
来源:互联网 发布:java如何定义一个方法 编辑:程序博客网 时间:2024/06/04 00:01
然而, 默认的BindingList不支持Sort, 需要我们实现。
public class SortableBindingList<T> : BindingList<T> { // Fields private bool isSorted; private ListSortDirection listSortDirection; private PropertyDescriptor propertyDescriptor; // Methods public SortableBindingList() { } public SortableBindingList(IList<T> list) : this() { base.Items.Clear(); foreach (T local in list) { base.Add(local); } } protected override void ApplySortCore(PropertyDescriptor prop, ListSortDirection direction) { (base.Items as List<T>).Sort(this.GetComparisionDelegate(prop, direction)); } private Comparison<T> GetComparisionDelegate(PropertyDescriptor propertyDescriptor, ListSortDirection direction) { return delegate(T t1, T t2) { int num2; ((SortableBindingList<T>)this).propertyDescriptor = propertyDescriptor; ((SortableBindingList<T>)this).listSortDirection = direction; ((SortableBindingList<T>)this).isSorted = true; int num = (direction == ListSortDirection.Ascending) ? 1 : -1; if (propertyDescriptor.PropertyType == typeof(string)) { num2 = StringComparer.CurrentCulture.Compare(propertyDescriptor.GetValue(t1), propertyDescriptor.GetValue(t2)); } else { num2 = Comparer.Default.Compare(propertyDescriptor.GetValue(t1), propertyDescriptor.GetValue(t2)); } return (num * num2); }; } protected override void RemoveSortCore() { this.isSorted = false; this.propertyDescriptor = base.SortPropertyCore; this.listSortDirection = base.SortDirectionCore; } // Properties protected override bool IsSortedCore { get { return this.isSorted; } } protected override ListSortDirection SortDirectionCore { get { return this.listSortDirection; } } protected override PropertyDescriptor SortPropertyCore { get { return this.propertyDescriptor; } } protected override bool SupportsSortingCore { get { return true; } } }
调用RaiseListChangedEvents = false 或者RaiseListChangedEvents = true来控制更改通知,
调用ResetBindings()来全部更新, 或者ResetItem(index)来更新指定索引
- 为BindingList添加Sort
- 为 Vector 添加sort()快速排序方法
- BindingList 看起来很美
- BindingList,还是很美的
- List和BindingList的转换
- service sort 添加日程 验证
- 使用BindingList实现DataGridView的动态绑定
- Delphi XE2 BindingList与list 比较
- Devexpress:在GridControl中使用BindingList
- 为Eclipse添加游戏
- 为Blog添加天气预报
- 为图片添加水印
- 为图片添加水印
- 为Blog添加广告语
- 为工具栏添加文字
- 为数据表添加行号
- 为datagridView添加行号
- 添加为工程
- C#中使用GetCursorPos获取屏幕坐标
- DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC
- Enum定义位域, 即可以通过位操作来产生未命名的值
- TreeView滚动TreeViewItem
- 实现PIX需要参考的标准资料
- 为BindingList添加Sort
- HL7 Tools suite
- WPF Background的设置有坑
- jpa+mysql:查询出的记录居然都是同一个entity
- 用Entity Framework 来创建MySql数据库和表结构
- WCF知识点(应用WCF支持原生Socket访问, 原始字节流传输)
- HL7 Event Type
- linux 下 C 编程和make的方法 (三、工程文档的组织)
- hadoop中的Partitioner分区