添加空行到数据绑定组合框Vb.net

时间:2016-10-25 15:25:40

标签: vb.net combobox row

我知道这个问题已被问了一千次,我已经完成了我的研究,但是我无法找到任何可以解决这个问题的东西。我正在从数据表中加载一个组合框,并设置.selectedindex = -1,以便用户可以进行选择。但是,如果用户改变主意并想要取消选择,则他们无法做到这一点,因为下拉列表中的所有项目都有值。我遇到了一些建议用户点击删除的地方,并设置.selectedIndex = -1,但我不知道如何在可以选择的下拉列表中添加一个空值。这是我的代码看起来像......

我运行一个存储过程并将其加载到DataTable中,DataTable用作我的数据源......

    dt.Load(cmd.ExecuteReader)

    oCombobox.DataSource = dt
    oCombobox.ValueMember = "ID"
    oCombobox.DisplayMember = "Name"
    oCombobox.SelectedIndex = -1

我做了很多研究,根本无法为VB.Net找到可行的解决方案,我已经遇到了一些C#的解决方案,但DataTable.AddRow()不是其中之一因此VB的函数无法在我的项目中实现它。

编辑

 Dim dr As DataRow = dt.NewRow
    dr("ID") = 0
    dr("Name") = ""
    dt.Rows.Add(dr)

2 个答案:

答案 0 :(得分:2)

我在程序中添加了一个带有空白值的联合:

SELECT ID = 0,
       Name = ''

UNION

SELECT ID,
       Name
FROM YourTable

然后,您可以执行Order By,以便0从顶部开始。不确定这是否是最佳方式,但过去它对我有用。

您可以修改DataTable并添加一个包含空白值的新行:

Dim dr As DataRow = dt.NewRow
dr("ID") = 0
dr("Name") = ""
dt.Rows.Add(dr)

如果您想订购DataTable,最好的选择是使用DataView

Dim dv As New DataView(dt)
dv.Sort = "ID ASC"

或者正如Plutonix在评论中所说:

dt.Rows.InsertAt(dr,0)

答案 1 :(得分:0)

尝试一下,我已经尝试使用它了并且可以使用。 :)

Combobox1.datasource = table
Combobox1.SelectedIndex = -1
ComboBox1.DisplayMember = "Column you want to display"
ComboBox1.ValueMember = "ID"