将对象添加到SortedBindingList

时间:2009-01-27 14:56:34

标签: c# winforms csla

我有一个包含DataGridView的WinForm,其中包含一个组中的成员列表。该表单包含用于添加新成员和更改当前成员角色的功能(bindingNavigator)。我希望能够对成员进行排序,并通过在混合中引入 SortedBindingList 来实现这一点。然而,这有一个令人遗憾的效果,即拒绝我向团队添加新成员的能力。我得到以下异常:

  

发生了System.InvalidOperationException

     

Message =“无法将项目添加到只读或固定大小的列表中。”

我理解错误,但有什么方法可以解决这个问题,还是我必须找到其他方法对列表进行排序?

1 个答案:

答案 0 :(得分:4)

我使用Binding List View获得了很多运气。只需将对象保存在Generic列表中,然后像这样设置DataSource:

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