Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net无法强制转换类型为';System.String';输入';System.Data.DataTable';使用VB_Asp.net_Vb.net - Fatal编程技术网

asp.net无法强制转换类型为';System.String';输入';System.Data.DataTable';使用VB

asp.net无法强制转换类型为';System.String';输入';System.Data.DataTable';使用VB,asp.net,vb.net,Asp.net,Vb.net,我有一个问题,为什么我会出错: 无法将“System.String”类型的对象强制转换为System.Data.DataTable类型 如何修复此错误?只需更改以下代码即可 If String.IsNullOrEmpty(ViewState("InqProcurement_New.dtItem").Tostring())=false then If Not String.IsNullOrEmpty(Convert.Tostring(dtItem.Rows(0).Item(0

我有一个问题,为什么我会出错:

无法将“System.String”类型的对象强制转换为System.Data.DataTable类型


如何修复此错误?

只需更改以下代码即可

  If String.IsNullOrEmpty(ViewState("InqProcurement_New.dtItem").Tostring())=false then

        If Not String.IsNullOrEmpty(Convert.Tostring(dtItem.Rows(0).Item(0))) Then
            dtItem.Rows.Add()
        Else
            gvInqProqurement.Rows(0).Cells(9).Visible = True
            gvInqProqurement.Rows(0).Cells(10).Visible = True
        End If
在这种情况下,如果使用.ToString()方法,那么我们的程序应该抛出null引用异常。在Convert.ToString()中,我们的程序不会引发任何异常。默认情况下,它接受一个空白值,而不是null


这可能不是您出现错误的原因,但第一行中可能有语法错误

这一行:

If Not String.IsNullOrEmpty(dtItem.Rows(0).Item(0).ToString) Then
应如下所示:

If Not String.IsNullOrEmpty(dtItem.Rows(0).Item(0).ToString()) Then

检查行
dtItem=ViewState(“InqProcurement\u New.dtItem”)
中的
ViewState(“InqProcurement\u New.dtItem”)的类型


它可能返回字符串值。

使用
Ctype
将从viewstate返回的值转换为DataTable。您甚至可以使用
DirectCast

Dim dtItem As New DataTable
if ViewState("InqProcurement_New.dtItem") isnot nothing then
    dtItem = CType(ViewState("InqProcurement_New.dtItem"),DataTable)
end if

您可能需要考虑当它为空时的情况…

如果。。。如果
,则对应于最终的
结束?问:错误发生在哪一行?什么是“ViewState()”?问:代码中的最后一个“如果结束”属于哪里?顶部是否缺少一些相关的代码?您从哪里得到错误?这肯定不在上面的代码中@paulsm4:我想我在以下行中得到了错误:ViewState(“InqProcurement_New.dtItem”)=dtItem gvinqproqrement.DataSource=dtItem gvinqproqrement.DataBind()…我是VB初学者,这是我第一次使用ViewState(),在下面的行
dtItem.Rows(0).Item(0)中不应该使用圆括号.ToString
。它不应该看起来像是
dtItem.Rows(0).Item(0).ToString()
我一直在尝试,但我刚刚遇到了相同的错误我更改了代码,但遇到了相同的错误:(我尝试了您的代码,现在我得到了错误“对象引用未设置为对象的实例”。您能告诉我为什么会出现此错误吗?您的viewstate很可能不包含“InqProcurement\u New.dtItem”。您可以在强制转换之前检查它是否为null…类似于if viewstate(“InqProcurement\u New.dtItem”)然后dtItem=CType(ViewState(“InqProcurement\u New.dtItem”),DataTable)结束If@martinportgas:我的代码有帮助吗?如果有,请将答案标记为已接受,并在可能的情况下进行投票。
Dim dtItem As New DataTable
if ViewState("InqProcurement_New.dtItem") isnot nothing then
    dtItem = CType(ViewState("InqProcurement_New.dtItem"),DataTable)
end if