我有一些代码,可以从MS SQL Server中的存储过程加载数据,然后将数据加载到DataGridView
中,它工作得很好。我想让连接/加载数据的代码位于我的Database
类中,然后将与DataGridView
相关的所有内容存储在我的Form
中,但是我在将BindingSource
的内容从Database
类传递到Form
时遇到了问题。
Form1
代码:
Public Class Form1
Dim myDatabaseObj As New Class1()
Dim bindingSource1 As New BindingSource()
Dim connectString As New SqlConnection
Dim objDataAdapter As New SqlDataAdapter
Dim table As New DataTable()
Dim tabletest As New DataTable()
Private Sub loadCompanyList()
Try
Me.dgv_CompanyList.DataSource = Me.bindingSource1
getCompanyList()
Catch ex As NullReferenceException
End Try
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
loadCompanyList()
End Sub
End Class
当我尝试将getCompanyList()
放在一个类中,然后创建一个引用该Form()
的新对象时,它似乎没有从表中向MyForm.BindingSource1.Datasource
返回任何值,这意味着我的DataGridView
不显示任何数据。
Database
类代码:
.....
Private Sub getCompanyList()
Try
Dim myForm as new Form()
connect_Transaction_Database()
objDataAdapter.SelectCommand = New SqlCommand()
objDataAdapter.SelectCommand.Connection = connectString
objDataAdapter.SelectCommand.CommandText = "sp_GetCompanyList"
objDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
Dim commandBuilder As New SqlCommandBuilder(Me.objDataAdapter)
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
Me.objDataAdapter.Fill(table)
**MyForm.bindingSource1.DataSource = table**
Catch ex As DataException
MsgBox(ex.Message)
Catch ex As NullReferenceException
MsgBox(ex.Message)
End Try
disconnect_Transaction_Database()
End Sub
发布于 2010-04-06 04:47:57
您希望getCompanyList
是一个返回DataTable
的函数。然后,忘记BindingSource
(如果DataGridView
是只读的),并将DataSource
属性设置为该函数:
Me.dgv_CompanyList.DataSource = getCompanyList
发布于 2016-03-17 01:45:59
我建议您将GetCompanyList
方法转换为一个函数,该函数返回由SqlDataAdapter
填充的DataTable
。没有真正的理由这个Sub应该有一个依赖于表单。相反,表单中的方法可以调用它来获取DataTable
,然后执行绑定。
Public Function GetCompanyList() As DataTable
...
...
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
Me.objDataAdapter.Fill(table)
Return table
...
...
https://stackoverflow.com/questions/2580053
复制相似问题