我有一个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;发布于 2015-01-03 09:22:22
正如您前面提到的,行是一个对象,所以您必须将其转换为IkunDataBaseObject对象。如果正确设置了数据库,您只需从数据集中获取选定的项,并从集合lstIkunsDB中删除它。
IkunDataBaseObject obj = (IkunDataBaseObject)dataGridIkuns.SelectedItem;
lstIkunsDB.Remove(obj);为了进行编辑,您应该在INotifyPropertyChanged类roperties上实现IkunDataBaseObject接口,然后每当您更改对象中的属性时,它就应该更新数据集。
https://stackoverflow.com/questions/27753103
复制相似问题