如何在vb.net中将组合框添加到绑定到datatable作为数据源的datagridview中?
我是VB.NET的新手。请容忍我。我有一个绑定到datatable的datagridview。我能够将“slided”列转换为组合框列。我有以下错误:“System.FormatException:DatagridViewComboboxCell值无效”。理论上我知道这个错误是由组合框的DisplayMember引起的。如何使DataGridView1接受组合框的ValueMember 我的全部代码:如何在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
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进行查找。