Vb.net 无法强制转换类型为';system.data.datarow';输入';system.data.datarowview';

Vb.net 无法强制转换类型为';system.data.datarow';输入';system.data.datarowview';,vb.net,Vb.net,我一直收到 无法将“system.data.datarow”类型的对象强制转换为 “system.data.datarowview” 对于第一行代码,它甚至连第二行都没有。请有人告诉我,我已经在谷歌上搜索过了,但我发现的示例中没有一个是我正在使用的语言,这对我没有帮助 For Each lDataRow As DataRow In Me.SearchGrid.SelectedItems lDataRow.Delete() lDataTable = lDat

我一直收到

无法将“system.data.datarow”类型的对象强制转换为 “system.data.datarowview”

对于第一行代码,它甚至连第二行都没有。请有人告诉我,我已经在谷歌上搜索过了,但我发现的示例中没有一个是我正在使用的语言,这对我没有帮助

    For Each lDataRow As DataRow In Me.SearchGrid.SelectedItems
        lDataRow.Delete()
        lDataTable = lDataRow.Table

看起来您的网格绑定到了dataview,而不是数据表。为了迭代行,必须执行以下操作

For Each lDataRow As DataRowView In Me.SearchGrid.SelectedItems

但请记住,这只是视图,而不是表。因此,您最好从行中获取标识符,然后返回表并删除其中的值,然后更新dataview以反映更改。

如果要获取所选行,您必须请求所选行而不是所选项:

For Each test As DataRow In DataGridView1.SelectedRows
    test.Delete()
Next

上面的代码对我来说运行得很好。

我也尝试过,当我更改它时,它不喜欢lDataRow.Table,之后我就不知道如何使它工作了。我以前的选项也不能使它工作,我是一名C#程序员,我刚开始这项新工作,他们做VB,虽然这是同一个概念,但某些事情却大不相同。我没有。SelectedRows作为选项,我只有。SelectedItem或。SelectedItems