大家好我有一个组合框,它从一个绑定源很好地填充。所以问题是数据网格“名称”的列只显示来自填充下拉列表的值。那些与droplist不同的值显示为空。谁能告诉我为什么?下面是组合框的代码。我不能打印屏幕,但描述是这样的。 LIst有3个名字:John,Jake,Jay但是colum有10个名字,每个名字在各自的单元格中。 onload时的问题是没有显示其他名称。
Dim c4 As New DataGridViewComboBoxColumn()
c4.HeaderText = "Name"
c4.Name = "Name"
c4.DataPropertyName = "Name"
c4.DisplayMember = "NamesWithJ"
c4.ValueMember = "NamesWithJ"
c4.DisplayStyleForCurrentCellOnly = False
c4.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
c4.FlatStyle = FlatStyle.Standard
c4.SortMode = DataGridViewColumnSortMode.Automatic
c4.DataSource = AddtBndSrc
c4.Width = 100
Me.DataGrid.Columns.Add(c4)
这是我创建bindingsource并用值填充它的代码。连接完全没有错误。只是组合框在某些行中显示为空
Try
con = New SqlConnection(strConnection)
cib.Open()
adoAAda = New SqlDataAdapter(StrAddNameQuery, con)
adoAddtRs = New DataSet
adoAAda.Fill(adoAddtRs)
Dim tableAddt As DataTable = adoAddtRs.Tables(0)
Dim colum As DataColumn = tableAddt.Columns(0)
tableAddt.PrimaryKey = New DataColumn() {tableAddt.Columns(0)}
AddtBndSrc.DataSource = adoAddtRs.Tables(0)
con.close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Try
' connection procedure
con = New SqlConnection(strConnection)
con.Open()
adoPAda = New SqlDataAdapter(StrProductQuery, con)
adoProductsRS = New DataSet
adoPAda.Fill(adoProductsRS)
Dim tableProduct As DataTable = adoProductsRS.Tables(0)
Dim colum As DataColumn = tableProduct.Columns(0)
tableProduct.PrimaryKey = New DataColumn() {tableProduct.Columns(0)}
productBndSrc.DataSource = adoProductsRS.Tables(0)
MsgBox(tableProduct.Columns(0).ColumnName.ToString)
con.close
datagridview.Datasource = productBndSrc
Catch ex As Exception
MsgBox(ex.Message)
End Try
答案 0 :(得分:0)
您似乎正在将组合框bindingSource AddtBndSrc
分配给DataGridViewComboBoxColumn
数据源。因此,如果该列指定了一些项目,它们将被数据源覆盖。
答案 1 :(得分:0)
您想合并组合框的值。有些硬编码为组合,但是从数据库中提取。如果是这样,您需要在绑定到组合之前将硬编码值添加到数据源中。
按照以下行添加下面的代码。
adoAAda.Fill(adoAddtRs)
Dim tableAddt As DataTable = adoAddtRs.Tables(0)
'在绑定之前将您的硬编码名称添加到DATASOURCE
Dim tableAddt As DataTable = adoAddtRs.Tables(0)
Dim dr As DataRow = tableAddt.NewRow
dr("NamesWithJ") = "My test 1"
tableAddt.Rows.Add(dr)
Dim dr1 As DataRow = tableAddt.NewRow
dr("NamesWithJ") = "My test 2"
tableAddt.Rows.Add(dr1)