用数据集填充组合框

时间:2019-01-17 15:26:08

标签: vb.net winforms combobox dataset

我正在尝试使用从SQL数据库填充的数据集,该数据集只有一列具有唯一名称的列可用于填充ComboBox。

现在我正在使用此代码:

ClassTables.FillDistrib()
ComboBox.DataSource = ClassTables.Distrib.Tables("Names")

ClassTables是用于填充我的数据集的类。
Distrib是我的数据集的名称(FillDistrib是用于清除和填充它的Sub)
ComboBox是我的组合框的名称

但是ComboBox下拉列表留为空白。
但是,在DataGridView中使用时,似乎已正确填充了DataSet。

1 个答案:

答案 0 :(得分:1)

在将复杂对象作为DataTable分配给ComboBox或ListBox控件的DataSource属性时,请使用DisplayMember属性指定哪个 Column < DataTable的/ strong>应该用作显示ListControl项目文本的源。

如果所选项目还应返回与显示的文本不同的值,则还应将ValueMember属性设置为提供相关值的列的名称。
可能在设置控件的DataSource引用之前(以避免基础数据的重复迭代)。

让我们构建一个DataTable来测试该过程:

DataTable分配给ComboBox控件的DataSource,将提供要显示的文本的列的名称指定为DisplayMember,并将ValueMember的名称指定为ComboBox.SelectedValue当用户更改 SelectedItem 时将提供 Dim dt As New DataTable("TestTable") dt.Columns.AddRange({ New DataColumn("Names", GetType(String)), New DataColumn("Values", GetType(Integer)) }) Dim row As DataRow = dt.NewRow() row.ItemArray = New Object() {"Some Name", 1} dt.Rows.Add(row) row = dt.NewRow() row.ItemArray = New Object() {"Some OtherName Jr.", 2} dt.Rows.Add(row) row = dt.NewRow() row.ItemArray = New Object() {"Another Name", 3} dt.Rows.Add(row) row = dt.NewRow() row.ItemArray = New Object() {"Last Name", 4} dt.Rows.Add(row) ComboBox1.DisplayMember = "Names" ComboBox1.ValueMember = "Values" ComboBox1.DataSource = dt.DefaultView Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox1.SelectionChangeCommitted Dim cbo = DirectCast(sender, ComboBox) TextBox1.Text = cbo.GetItemText(cbo.SelectedValue) End Sub 属性返回的其他数据的列:

$cmd = @'
p4 changes @2018/01/16','@now
'@;    
Invoke-Expression $cmd

结果:

enter image description here