【问题标题】:Getting DataGrid current item into an object WPF将 DataGrid 当前项放入对象 WPF
【发布时间】:2018-11-22 03:20:05
【问题描述】:

几天以来,我在将 WPF DataGrid 的当前项目转换为 linq-generated 实体时遇到了问题。如果有人能帮我解决这个问题,那就太棒了。 我正在使用 linq 查询获取 DataGrid 的数据,如下所示:

Dim payableexpense As New exprev
Dim listofexpenses As IEnumerable(Of exprev)

Private Sub txtsearchname_TextChanged(sender As Object, e As TextChangedEventArgs) Handles txtsearchname.TextChanged
   listofexpenses = From expenses In db.exprevs
   Where expenses.school_id = currentschool.school_id AndAlso expenses.title.Contains(txtsearchname.Text.ToString) AndAlso expenses.status <> 1 AndAlso expenses.type = 1

   dgvsearchresults.ItemsSource = listofexpenses
   dgvsearchresults.Items.Refresh()
   stpexpensedetails.DataContext = payableexpense
End Sub

对于 DataGrid 选择更改事件,我有以下代码:

Private Sub dgvsearchresults_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles dgvsearchresults.SelectionChanged
payableexpense = dgvsearchresults.CurrentItem
End Sub

但是在run-time 期间,它抛出了一个异常:

“无法将'ms.internal.namedobject'类型的对象转换为'exprev'”

在我项目的另一个地方,同样的方法运行良好。

【问题讨论】:

  • exprev 是什么?向我们展示有关exprev的代码
  • @zackraiyan exprev 是基于数据库中的表的 Linq-to-SQL 生成的实体。

标签: .net wpf vb.net linq linq-to-sql


【解决方案1】:

使用TryCast 方法尝试将SelectedItem 属性转换为exprev

Private Sub dgvsearchresults_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles dgvsearchresults.SelectionChanged
    Dim selectedItem As exprev = TryCast(dgvsearchresults.SelectedItem, exprev)
    If selectedItem IsNot Nothing Then
        payableexpense = selectedItem
        '...
    End If
End Sub

【讨论】:

  • 谢谢,这正是我想要的。很抱歉没有将其标记为并早点回答。
猜你喜欢
  • 2011-02-22
  • 2013-02-03
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 2012-03-15
  • 2014-02-28
相关资源
最近更新 更多