Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在vb.net中将组合框添加到绑定到datatable作为数据源的datagridview中?_Vb.net_Datagridview_Combobox_Datagridviewcombobox - Fatal编程技术网

如何在vb.net中将组合框添加到绑定到datatable作为数据源的datagridview中?

如何在vb.net中将组合框添加到绑定到datatable作为数据源的datagridview中?,vb.net,datagridview,combobox,datagridviewcombobox,Vb.net,Datagridview,Combobox,Datagridviewcombobox,我是VB.NET的新手。请容忍我。我有一个绑定到datatable的datagridview。我能够将“slided”列转换为组合框列。我有以下错误:“System.FormatException:DatagridViewComboboxCell值无效”。理论上我知道这个错误是由组合框的DisplayMember引起的。如何使DataGridView1接受组合框的ValueMember 我的全部代码: Imports System.Data.SqlClient Imports System.Co

我是VB.NET的新手。请容忍我。我有一个绑定到datatable的datagridview。我能够将“slided”列转换为组合框列。我有以下错误:“System.FormatException:DatagridViewComboboxCell值无效”。理论上我知道这个错误是由组合框的DisplayMember引起的。如何使DataGridView1接受组合框的ValueMember

我的全部代码:

Imports System.Data.SqlClient
Imports System.Configuration

Public Class frmCheckDisbursements

Dim da As SqlDataAdapter
Dim ds As DataSet
Dim dt As DataTable
Dim col As DataColumn
Dim bs As BindingSource


Private Sub frmCheckDisbursements_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Load_DGV_Data()
    Load_SLCombobox()
End Sub

Private Sub Load_DGV_Data()

    dt = New DataTable("TempTable")

    col = New DataColumn("SLID", GetType(System.Int32))
    dt.Columns.Add(col)
    col = New DataColumn("Amount", GetType(System.Decimal))
    dt.Columns.Add(col)

    dgvEntries.AutoGenerateColumns = False
    dgvEntries.DataSource = dt

End Sub

Private Sub Load_SLCombobox()

    Dim CS As String = ConfigurationManager.ConnectionStrings("SimpleAccounting.My.MySettings.SimpleAcctgConnectionString").ConnectionString

    Using con As SqlConnection = New SqlConnection(CS)

        da = New SqlDataAdapter("sp_NET_tblSL_AccountID", con)
        da.SelectCommand.CommandType = CommandType.StoredProcedure
        da.SelectCommand.Parameters.AddWithValue("@CompanyID", CInt(ConfigurationManager.AppSettings("CompanyID")))
        da.SelectCommand.Parameters.AddWithValue("@AccountID", 5)

        ds = New DataSet
        da.Fill(ds)
        ds.Tables(0).TableName = "SL"

        bs = New BindingSource
        bs.DataSource = ds.Tables("SL")
        Me.SLBindingSource.DataSource = bs

        Dim dgvc As New DataGridViewComboBoxColumn
        dgvc.DisplayIndex = 0
        dgvc = DirectCast(dgvEntries.Columns(0), DataGridViewComboBoxColumn)
        dgvc.DataSource = SLBindingSource
        dgvc.Name = "SLID"
        dgvc.HeaderText = "SL Name"
        dgvc.DataPropertyName = "SLID"
        dgvc.DisplayMember = "SLName"
        dgvc.ValueMember = "SLID"

    End Using

End Sub

End Class

解决方案:我从jmcilhinney发布的vbforums中得到了这个解决方案。向DataGridView添加组合框列。这就是问题所在。

我不确定我是否正确理解您:您希望从给定的数据源填充DGV;那么您想将其中一列的类型转换为组合框类型,是吗?此组合框应包含哪些值?组合框将包含明细分类账的列表项。100多行。我使用datatable的目的是将用户输入存储在内存中,并在将所有数据插入数据库之前检查总量。(我不知道这是不是个好主意)。我只是边学边用。依赖数据源的主要原因是使用数据源中的内容,而不会对其进行太多更改(并且或多或少会同时影响DGV和数据源)。如果要执行相关更改(将列转换为Combobox),最好直接通过DataSource添加记录。您可以使用DataTable执行所有需要的更正,但不要将其用作数据源。我可以继续写一个简单的代码告诉你怎么做吗?是的,非常感谢你的帮助。实际上我上面的代码只是一个实验。我想学习如何像MS ACCESS一样,使用组合框列将数据直接插入datagridview进行查找。