我在ASP.NET中使用DataView时遇到了一些麻烦。我的代码非常简单,我只想从名为COURSEINFO的MS Access表中提取信息,将信息放入DataSet,并使用DataView作为GridView的源代码。我意识到使用SQL数据源来填充GridView会更容易,但我想使用DataView以便以后可以扩展它。
但是,这行代码给了我一个编译错误:
dv = dv = ds.Tables(0).DefaultView
其中dv是我的DataView,ds是我的DataSet。错误发生在“=”之后,dv = ds.Tables(0).DefaultView以蓝色下划线显示。
奇怪的是,这段代码几天前对我有用,我不知道为什么不再存在。我得到的错误说:“类型'System.Data.DataView'的值无法转换为'WebApplication1.DataView'
这是我的代码:
Dim connetionString As String
Dim connection As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0;" & "Data Source=|DataDirectory|\EXSpring2014.accdb")
Dim command As OleDb.OleDbCommand
Dim adapter As New OleDb.OleDbDataAdapter
Dim sql As String = "Select * from COURSEINFO"
Dim ds As DataSet = New DataSet
Dim dv As DataView
connection.Open()
command = New OleDb.OleDbCommand(sql, connection)
adapter.SelectCommand = command
adapter.Fill(ds, "Create_DataView")
adapter.Dispose()
command.Dispose()
connection.Close()
dv = ds.Tables(0).DefaultView
GridView1.DataSource = dv
当我实际尝试加载Web表单时,我在HTML代码中收到错误。我希望看到它,URL是 http://ime1.ime.calpoly.edu/ime312_move1x/ime312_5/WebApplication1/camtasia.aspx
最后,在进行此操作时,我生成了一个方法存根,我最终不需要“DataView”。我认为这可能是一个原因,但我不知道该怎么办。
答案 0 :(得分:0)
红鲱鱼是错误:
“类型'System.Data.DataView'的值无法转换为'WebApplication1.DataView'
编译器试图在这里解释什么?
由于.Net框架坚持强类型,因此开发人员只需将值分配给相同类型的变量。我们理解,我们无法将List<String>
分配给Form
。如果你尝试了,你会看到类似的错误。
当您将两种类型命名为相同时,就会出现混淆,在本例中为DataView
。您不能在同一名称空间中使用相同的命名类型,因此必须有两个DataView
类型,确实存在:名称空间System.Data
中的一个和名称空间中的一个WebApplication1
。
在您的代码中没有看到,但我必须假设您在Web项目的某处创建了一个名为DataView
的网页或其他类型。如果未明确指定名称空间,则编译器会确定应使用当前名称空间中的类型。
要解决这个编译错误,你只需要明确哪个DataView
你想要一个变量。
将dv
的类型更改为System.Data.DataView
类型,一切正常:
Dim dv As System.Data.DataView
阅读关于artcile Namespaces in Visual Basic的更多背景知识。