首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将对象转换为dataRowView

将对象转换为dataRowView
EN

Stack Overflow用户
提问于 2015-01-03 08:37:57
回答 1查看 2K关注 0票数 0

我有一个DataGrid,其中每一行都是一个对象。我想编辑/删除一行。我使用以下方法获得选定的行:

代码语言:javascript
复制
 DataRowView dataRow = (DataRowView)dataGridIkuns.SelectedItem; // Selected row.

但是,它引发以下异常:

无法将“IkunDataBaseObject”类型的对象强制转换为“System.Data.DataRowView”。

我怎样才能从DataGrid上取一排呢?

在我改变向数据网格插入信息的方式之前,这一行工作得很好。在从数据库访问加载信息之前,我将信息作为对象插入。

我对数据网格的插入:

代码语言:javascript
复制
ObservableCollection<IkunDataBaseObject> lstIkunsDB = 
    new ObservableCollection<IkunDataBaseObject>();

for (int counterIkunsDB = 0; counterIkunsDB < rowCount2; counterIkunsDB++)
{

    IkunDataBaseObject ikunTempDB = new IkunDataBaseObject(txtNumOfIkunDG, 
        txtNumOfRadarDG, txtObserverDG, txtLatDG, txtLongDG, 
        txtLatByCuttingDG, txtLongByCuttingDG, txtDeviationDG, 
        txtLatDeviation, txtLongDeveation);

    lstIkunsDB.Add(ikunTempDB);


}
dataGridIkuns.ItemsSource = lstIkunsDB;
EN

回答 1

Stack Overflow用户

发布于 2015-01-03 09:22:22

正如您前面提到的,行是一个对象,所以您必须将其转换为IkunDataBaseObject对象。如果正确设置了数据库,您只需从数据集中获取选定的项,并从集合lstIkunsDB中删除它。

代码语言:javascript
复制
IkunDataBaseObject obj = (IkunDataBaseObject)dataGridIkuns.SelectedItem;
lstIkunsDB.Remove(obj);

为了进行编辑,您应该在INotifyPropertyChanged类roperties上实现IkunDataBaseObject接口,然后每当您更改对象中的属性时,它就应该更新数据集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27753103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档