【问题标题】:VB.NET WPF How to get the column value from datagrid?VB.NET WPF 如何从数据网格中获取列值?
【发布时间】:2017-03-10 18:12:30
【问题描述】:

所以我对 WPF 还不是很熟悉,在 WinForms 中,你可以有 CellDoubleClick 事件,我可以得到类似的值

row.Cells("ID").Value.ToString()

但是在 WPF 中,row 不是 datagrid 的成员。那么如果用户只是双击该行,我怎样才能获得所选 ID 的值呢? 这是一张图片来澄清我的问题。显示的记录来自数据表。当显示多行记录,并且用户双击任意一行时,如何获取所选行 ID 的值?获取 selectedIndex 很容易,但我在试图弄清楚如何获取 ID 的值时迷失了方向。

-------更新-------

所以在 WinForms 中,我会像这样获得 ID,但不确定如何在 WPF 中。

Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
    If e.RowIndex >= 0 Then
        Dim row As New DataGridViewRow
        row = Me.DataGridView1.Rows(e.RowIndex)
        THE_ID = row.Cells("ID").Value.ToString() 'The ID is saved
    End If
End Sub

【问题讨论】:

    标签: mysql wpf vb.net datatable datagrid


    【解决方案1】:

    在 WPF 数据网格中,网格本身绝不能用于获取数据。但是,请使用您确实知道的有关网格的信息。选定的行索引或“SelectedIndex”是您应该用来交叉引用绑定数据源的索引。

    例如,假设您有一些 DataTable 并将其视图绑定到 DataGrid,您可能会有如下所示的内容:

        Dim View As DataView = TryCast(DataGrid1.ItemsSource, DataView)
        If View IsNot Nothing Then
            Dim ViewRow As DataRowView = View.Item(DataGrid1.SelectedIndex)
            Dim ColumnValue As Object = ViewRow.Item("ID")  'or ViewRow.Item(0) for positional value.
    
            'do something with ColumnValue here.
        End If
    

    如果您将 DataTable 的视图绑定到网格,这应该可以工作,但请记住网格可以采用任何 IEnumerable。所以你的问题在很大程度上取决于你的 ItemsSource 是什么对象,以及该对象如何实现 IEnumerable。

    希望有帮助!

    【讨论】:

    • 谢谢!您能否进一步解释一下为什么要 TryCast itemsource 和 dataview?
    • 好吧,正如我提到的,ItemsSource 实际上只是一个 IEnumerable 接口。这实际上可以是任何类型的对象。为了安全起见,我只是使用 TryCast。如果数据类型不是“DataView”类型(对于 DataTable,它应该返回 DataView 类型),TryCast 将返回“Nothing”。
    猜你喜欢
    • 2017-11-16
    • 2019-08-16
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多