将Devexpress GridControl SelectedItems转换成目标类型

   在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<T>,包含已转换为指定类型的源序列的每个元素。
        //
        // 异常: 
        //   System.ArgumentNullException:
        //     source 为 null。
        //
        //   System.InvalidCastException:
        //     序列中的元素不能强制转换为 TResult 类型。
        public static IEnumerable<TResult> Cast<TResult>(this IEnumerable source);

System.Collections.IList items = (System.Collections.IList)this.gridControl.SelectedItems;
            var collection = items.Cast<OPTION>();//    OPTION就是我需要转成的目标类型
            var someModelList = collection.ToList();
            OPTION seletedOPTION = someModelList[0] as OPTION;//获取到值,说明转换成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值