美好的一天,
我一直试图弄清楚我的应用程序中的错误来源。这个函数(GetConcentrations()
)用于将数据库中的数据显示到DataGridView上。该函数在PageLoad中调用但工作正常,但当我在另一个Sub中调用它时,我收到此错误。
有人能帮帮我吗?我已经尝试了不同的方式。
谢谢!
以下是代码:
Private Sub GetConcentrations()
Dim conString As String = ConfigurationManager.ConnectionStrings("dbAsthmaConnectionString").ConnectionString
Me.dataAdapter = New SqlDataAdapter("Select * from tblConcentrations", conString)
'Dim adapter As New SqlDataAdapter("Select * from tblConcentrations", conString)
Dim dataset As New Data.DataSet
Try
Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapter)
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
Me.dataAdapter.Fill(table)
'Dim datasetgetconcentrations = New DataSet
Me.dataAdapter.Fill(dataset)
Me.bindingSource1.DataSource = table
DataGridView3.AutoResizeColumns(DataGridViewAutoSizeColumnMode.AllCellsExceptHeader)
DataGridView3.DataSource = dataset.Tables(0)
dataset.Dispose()
Catch ex As Exception
MsgBox("Failed to display the concentration table (GetConcentrations)!", MsgBoxStyle.Information)
End Try
'Dim ConcentrationValue As Double = DataGridView2.Rows.Contains
'TextBoxCurrentConcentration.Text = txtMessage.Text
End Sub
答案 0 :(得分:0)
我不明白你为什么两次打电话给Fill方法 一次填充DataTable,再填充一次DataSet。实际上只需要数据集的那个。 如果这会改变你的问题,你能试试吗?
Dim ds as New DataSet
ds.Locale = System.Globalization.CultureInfo.InvariantCulture
Me.dataAdapter.Fill(ds)
DataGridView3.AutoResizeColumns(DataGridViewAutoSizeColumnMode.AllCellsExceptHeader)
DataGridView3.DataSource = ds.Tables(0)
此外,不要在退出时丢弃数据集,您仍在使用它 在这种情况下,最好让垃圾收集处理此任务。