Asp.net 无法强制转换类型为';System.Data.DataView';输入';System.Data.IDataReader';
我有一个从XMLWebService获取数据的函数(在vb.net上):Asp.net 无法强制转换类型为';System.Data.DataView';输入';System.Data.IDataReader';,asp.net,vb.net,dataview,idatareader,Asp.net,Vb.net,Dataview,Idatareader,我有一个从XMLWebService获取数据的函数(在vb.net上): Private Function GetDataSchedule() As DataTable Dim xTable As Data.DataTable xTable = xMaster.GetSchedule() 'Bind to DataTable Dim DT As New System.Data.DataTable DT.Load(xTable.DefaultView) '
Private Function GetDataSchedule() As DataTable
Dim xTable As Data.DataTable
xTable = xMaster.GetSchedule()
'Bind to DataTable
Dim DT As New System.Data.DataTable
DT.Load(xTable.DefaultView) '--> When I set a breakpoint, the error start from here
Return DT
End Function
然后是调用GetDataSchedule()
函数的函数:
Public Sub ShowDataSchedule()
Dim DSSchedule As New System.Data.DataSet
DSSchedule.Tables.Add(GetDataSchedule)
End Sub
但是,当我执行代码时,会得到错误消息:
无法将“System.Data.DataView”类型的对象强制转换为“System.Data.IDataReader”类型。
当我刚刚执行GetDataSchedule()
函数时,它返回值,但当我单独调用该函数时,它出现了错误。我错过什么了吗?我需要你的帮助。谢谢…试试这个
DSSchedule.Tables.Add(GetDataSchedule().Copy())
尽管如此,由于您可能会从GetDataSchedule()返回一个空引用,因此最好稍微重新考虑一下您的代码:
Dim schedule as Data.DataTable = GetDataSechedule()
If Not IsNothing(schedule) Then
DSSchedule.Tables.Add(schedule.Copy())
End If
否则,如果您尝试对空引用执行
.Copy()
,代码将发出boom。加载函数只接受DataReaders作为参数(例如:SqlDataReader),但您已经有了datatable。有DT=xTable就足够了。您好,谢谢。。它不起作用。我仍然得到了消息,我想问题是没有得到一个空引用,但我不太确定..如果我不清楚的话,很抱歉。我认为解决您问题的方法是上面的Copy()方法。空引用检查是我额外添加的。