【发布时间】:2018-11-30 04:06:53
【问题描述】:
我正在尝试将 DataRow 复制到新的 DataTable 中,然后在 GridView 中显示它,但我一直遇到问题。
Dim r As DataRow() = dt.Select("MacID = 'A06'")
Dim dt2 As DataTable
dt2.ImportRow(r) 'this is where problem begins
GridView2.DataSource = dt2
GridView2.DataBind()
DataRow 来自另一个 DataTable,当我将鼠标悬停在问题行时,它显示
Value of type '1-dimensional array of System.Data.DataRow' cannot be converted to 'System.Data.DataRow'
在我的一生中,我不知道这意味着什么,也不知道这是否正确(可能不是)。请帮忙...
编辑 1: 在 jmcilhinney 的回复之后,我尝试了他的第二个代码,因为有多行。但我的代码有一些问题:
Dim dt2 as DataTable
Dim rows = dt.Select("MacID = 'A06'")
For Each row In rows
dt2.ImportRow(row) 'Problem shown here
Next
GridView2.DataSource = dt2
GridView2.DataBind()
当我再次将鼠标悬停在它上面时,错误提示:
Variable 'dt2' is used before it has been assigned a value.
A null reference exception could result at runtime.
【问题讨论】:
-
如错误消息所示,在调用
dt2方法之前,您没有为dt2变量分配任何内容。您声明了变量,但从未真正创建DataTable对象,也从未向其中添加任何列。您必须手动执行此操作,或者在现有的DataTable上调用Clone。正如我在回答中建议的那样,最好在现有的DataTable上创建一个DataView。 -
但我已经试过了。虽然它适用于我的 GridView,但我的饼图仍然一团糟。
-
我不会做太多图表,如果有的话,所以我不确定图表如何处理
DataView,但如果它与DataTable有任何不同,我会感到惊讶。DataView肯定会为GridView工作,这就是你在这里问的问题。如果您对使用带有图表控件的DataView有其他问题,那么您应该单独发布,或者您可以按照我的描述创建另一个DataTable。 -
很公平。我实际上已经发布了这个问题。只是我正在运行一些测试并遇到了这个问题,不得不问一个这个问题才能得到答案。是的,我编程太差了……
标签: vb.net