2009-01-27 131 views
0

我有一个WinForm包含一个DataGridView和一个组中的成员列表。该表单包含用于添加新成员和更改当前成员角色的功能(bindingNavigator)。我希望能够对成员进行排序,并通过将SortedBindingList引入混合来实现此目的。然而,这具有否认我有能力向团队添加新成员的不幸效果。我得到以下异常:将对象添加到SortedBindingList

System.InvalidOperationException发生

消息=“项目不能被添加到一个只读或固定大小的列表。”

我明白这个错误,但有没有办法解决这个问题,或者我必须找到一些其他方法来排序列表?

回答

4

我已经有很多运气使用Binding List View。只要保持你的对象泛型列表,并设置数据源,像这样:

public void BindGenericList<T>(List<T> list) 
{ 
    DataSource = new BindingListView<T>(list); 
} 

获取实际的对象背出名单的很简单,只要:

public void GetObjectFromRow<T>(int rowIndex) 
{ 
    BindingListView<T> bindingListView = DataSource as BindingListView<T>; 

    return (null != bindingListView) ? bindingListView[rowIndex].Object : default(T); 
} 

与BLV排序实际上faster than using a DataView是。