首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将数据绑定到DataGridView

将数据绑定到DataGridView
EN

Stack Overflow用户
提问于 2010-04-06 02:04:24
回答 2查看 9K关注 0票数 0

我有一些代码,可以从MS SQL Server中的存储过程加载数据,然后将数据加载到DataGridView中,它工作得很好。我想让连接/加载数据的代码位于我的Database类中,然后将与DataGridView相关的所有内容存储在我的Form中,但是我在将BindingSource的内容从Database类传递到Form时遇到了问题。

Form1代码:

代码语言:javascript
复制
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类代码:

代码语言:javascript
复制
.....
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
EN

回答 2

Stack Overflow用户

发布于 2010-04-06 04:47:57

您希望getCompanyList是一个返回DataTable的函数。然后,忘记BindingSource (如果DataGridView是只读的),并将DataSource属性设置为该函数:

代码语言:javascript
复制
Me.dgv_CompanyList.DataSource = getCompanyList
票数 0
EN

Stack Overflow用户

发布于 2016-03-17 01:45:59

我建议您将GetCompanyList方法转换为一个函数,该函数返回由SqlDataAdapter填充的DataTable。没有真正的理由这个Sub应该有一个依赖于表单。相反,表单中的方法可以调用它来获取DataTable,然后执行绑定。

代码语言:javascript
复制
Public Function GetCompanyList() As DataTable
...
...
   Dim table As New DataTable()
   table.Locale = System.Globalization.CultureInfo.InvariantCulture
   Me.objDataAdapter.Fill(table)
   Return table
...
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2580053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档