将对象转换为dataRowView

时间:2015-01-03 08:37:58

标签: c# wpf datagrid

我有一个DataGrid,其中每一行都是一个对象。我想编辑/删除一行。我使用这个获得所选行:

 DataRowView dataRow = (DataRowView)dataGridIkuns.SelectedItem; // Selected row.

但是,它会抛出以下异常:

  

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

如何从DataGrid中获取一行?

在我改变向数据网格插入信息的方式之前,这条线路非常完美。在从数据库访问加载信息之前,我将信息作为对象插入。

我对数据网格的插入:

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;

1 个答案:

答案 0 :(得分:0)

正如您所提到的,行是一个对象,因此您必须将其转换为IkunDataBaseObject对象。 如果正确设置了数据绑定,则可以从数据网格中获取所选项目的对象,并将其从集合lstIkunsDB中删除。

IkunDataBaseObject obj = (IkunDataBaseObject)dataGridIkuns.SelectedItem;
lstIkunsDB.Remove(obj);

对于编辑,您应该在IkunDataBaseObject类属性上实现INotifyPropertyChanged接口,然后每当您更改对象中的属性时它都应该更新数据网格。