在Devexpress GridControl 本来想通过FocusedRowHandle的值来获取选中的对象,并且删除,如果对象没有进行重新排序,筛选,那么,通过FocusedRowHandle来解决获取当前对象是没有问题的。
但是在实际情况中,排序,筛选是一定会发生的,因此,
之前的思路就是通过排序筛选,触发对应事件,对数据源也做对应的排序,筛选,但是这样做比较复杂,需要添加更多的代码。
因此,突然想到,每次选择后,可以获取到SelectedItems,这里面的数据,就是我想要删除的数据。
所以,我思考的方向是怎样把SelectedItems转换成我需要转换的对象。
之前考虑过,直接转换
OPTION seletedOPTION = this.gridControl.SelectedItems as OPTION;
这样获取的值为null
进一步了解发现,需要用Cast方法进行转换
//
// 摘要:
// 将 System.Collections.IEnumerable 的元素转换为指定的类型。
//
// 参数:
// source:
// 包含要转换的元素的 System.Collections.IEnumerable。
//
// 类型参数:
// TResult:
// source 中的元素要转换成的类型。
//
// 返回结果:
// 一个 System.Collections.Generic.IEnumerable,包含已转换为指定类型的源序列的每个元素。
//
// 异常:
// System.ArgumentNullException:
// source 为 null。
//
// System.InvalidCastException:
// 序列中的元素不能强制转换为 TResult 类型。
public static IEnumerable Cast(this IEnumerable source);
System.Collections.IList items = (System.Collections.IList)this.gridControl.SelectedItems; var collection = items.Cast();// OPTION就是我需要转成的目标类型 var someModelList = collection.ToList(); OPTION seletedOPTION = someModelList[0] as OPTION;//获取到值,说明转换成功。