【问题标题】:Edit wpf datagrid row after filtering过滤后编辑 wpf datagrid 行
【发布时间】:2011-11-10 04:12:25
【问题描述】:

我有一个 WPF C# 数据网格,我可以使用 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 为空。 我该如何解决这个问题?

【问题讨论】:

标签: c# .net wpf visual-studio-2010 datagrid


【解决方案1】:

这是因为过滤器必须清除选择,从而使objSendToEdit为空。

您应该在过滤后立即将objSendToEdit 重新选择回数据网格。

  objSendToEdit = dgEmp.SelectedItem;
  //// filter code
  dgEmp.SelectedItem = objSendToEdit;

如果这有帮助,请告诉我。

【讨论】:

    【解决方案2】:

    http://msdn.microsoft.com/en-us/library/cscsdfbt(v=VS.100).aspx

    作为 运算符就像一个强制转换操作。但是,如果转换不 可能,因为返回 null 而不是引发异常。

    你想用objSendToEdit = dgEmp.SelectedItem as Sender;做什么?

    【讨论】:

    • objContext.DeleteObject(objSendToEdit); objContext.SaveChanges();
    • 好吧,我换个说法,你为什么要把SelectedItem转换成Sender的类型?
    • 发件人是填充数据网格的数据库表。在我过滤数据网格之前它工作正常。
    猜你喜欢
    • 2011-07-11
    • 2011-08-23
    • 2011-04-25
    • 2015-10-04
    • 2011-09-14
    • 1970-01-01
    • 2013-03-12
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多