【发布时间】:2019-01-14 21:15:35
【问题描述】:
我在DataGridView 中有两个ComboBoxColumns(col_fon 是第一个,col_mon 第二个)。但是,只有一个 ComboBoxColumn (col_mon) 是 DataGridView 中存在的第二个 ComboBoxColumn 正在显示数据:
Private Sub Window_Load(sender As Object, e As EventArgs) Handles Me.Load
col_fon.ValueMember = "Code"
col_fon.DisplayMember = "Name"
col_fon.DataSource = LoadComboFon()
col_fon.SortMode = DataGridViewColumnSortMode.Automatic
col_mon.ValueMember = "Code"
col_mon.DisplayMember = "Name"
col_mon.DataSource = LoadComboMon()
col_mon.SortMode = DataGridViewColumnSortMode.Automatic
End Sub
出现在DatagridView中的每个ComboBoxColumn都有其正确的DataSource,通过以下方法加载(col_mon,即ComboBoxColumn没有问题)使用与以下相同的方法) :
Private Function LoadComboFon() As DataTable
Dim dsParFon As New DataSet
Dim dsFon As New DataSet
Dim dtFon As New DataTable
Dim Filter AS String
Try
Filter = "FONDO"
dsParFon.Tables.Add("FONDOS")
dsParFon.Tables("FONDOS").Columns.Add("FONDOS")
dsParFon.Tables("FONDOS").Rows.Add(Filter)
dsParFon.AcceptChanges()
' dsFon is loaded here with a method used by another classes
Catch ex As Exception
Throw
End Try
dtFon = dsFon.Tables(0)
dtFon.Columns("CodeFon").ColumnName = "Code"
Return dtFon
End Function
我尝试使用EditingControlShowing 和SelectedIndexChanged 事件,但第一个事件对DataGridView 没有任何作用,另一个不能用于这些列(因为它们在DataGridView 中而不是被创建并插入到DataGridView)
是否有另一种替代方法可以在受影响的列中加载DataSource 而不会出现另一个问题(以及功能性ComboBoxColum)?提前致谢
【问题讨论】:
-
嗯,您没有向我们展示的一件事是实际加载数据的方式,那么我们如何谈论“另一种”加载数据的方式?也就是说,如果您使用两个完全独立的
DataSets,那么这两列就不可能在此基础上相互“干扰”。我建议您正确调试代码并找出实际发生的情况。如果您所要做的只是某列未显示数据,那么您的假设太多了。 -
您的代码没有意义,因为您创建了一个
DataSet,创建了一个DataTable,然后按名称将DataTable添加到您的DataSet,从而创建了另一个新的@987654348 @。为什么会有两个DataTables?为什么你会有DataSet呢?只需创建一个DataTable,填充它然后绑定它。DataSet毫无意义。 -
数据是从SQL中提取出来的,我调试了代码。但它只显示了一个已被控制的dataerror异常。
-
数据是从 SQL 获取的(因为我是从我的数据库中提取数据),问题是由于某种原因它没有显示在我的列中。我调试了代码,它没有显示为什么它不显示数据。所有数据都是字符串,存储过程只是 SELECT * FROM 查询(这些存储过程由列使用,没有问题)。除了我帖子中公开的信息,您还需要哪些信息?我正在寻找另一种方法来显示我需要的数据。获取数据的方法就OK了
-
以及为什么我使用
DataSet,是因为用于获取数据的方法,它需要DataSet进行输入和输出。对不起我的英语不好
标签: vb.net datagridview datatable datasource