我有一个WPF C#datagrid,我可以使用SqlDataAdapter过滤它并使用ItemsSource属性显示它。
我也可以在过滤之前更新/删除行,但不能在之后更新/删除。
diamedbEntities objContext;
Sender objSendToEdit;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
objContext = new diamedbEntities();
dgEmp.ItemsSource = objContext.Senders;
}
private void dgEmp_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
objSendToEdit = dgEmp.SelectedItem as Sender;
}
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
if (objSendToEdit == null)
{
MessageBox.Show("Cannot delete the blank Entry");
}
else
{
objContext.DeleteObject(objSendToEdit);
objContext.SaveChanges();
MessageBox.Show("Record Deleted..");
}
}
过滤后objSendToEdit为null。 我该如何解决这个问题?
答案 0 :(得分:0)
http://msdn.microsoft.com/en-us/library/cscsdfbt(v=VS.100).aspx
as 运算符就像一个强制转换操作。但是,如果转换不是 可能,因为返回null而不是引发异常。
您要对objSendToEdit = dgEmp.SelectedItem as Sender;
做什么?
答案 1 :(得分:0)
这是因为过滤器必须清除选择因此使objSendToEdit
为空。
过滤后,您应立即重新选择objSendToEdit
回数据网格。
objSendToEdit = dgEmp.SelectedItem;
//// filter code
dgEmp.SelectedItem = objSendToEdit;
如果有帮助,请告诉我。