C# Windows Forms ComboBox 如何将默认值设置为 "Select " 最初从数据表加载数据

C# Windows Forms ComboBox How to Set default value to "Select " initially loads data from datatable

我搜索了该站点,找到了几个关于我想要做的事情的参考。 None 在我的案例中有效。

这似乎是一个简单的问题。我只是想将默认值设置为“--Select--”。

我正在从数据库的数据表中填充组合框

        Admin_BL admBL = new Admin_BL();
        //populates datatable from database
        dtBlds = admBL.GetActiveBuildings();

        cmbBuilding.DataSource = dtBlds;
        cmbBuilding.Text = "--Select--";

        cmbBuilding.DisplayMember = "Building";
        cmbBuilding.ValueMember = "Building"; 

我也用过这个:

cmbBuilding.Items.Insert(0, "Select Bld");

这似乎是一项简单的任务我不确定为什么这在 windows 表格中不起作用 感谢您的帮助谢谢!

考虑到“--Select--”是您的组合框中的第一项,在运行时您 select 是其索引的第一项(当然它可以设置在任何其他索引中,例如第三项则索引为 2):

cmbBuilding.SelectedIndex = 0;

要在填充组合框项目的函数中添加“--Select--”,在添加“--Select--”到其项目之前,然后从数据库中添加项目:

cmbBuilding.Items.Add("--Select--");

//从数据库中添加其他项目。

这里的问题是您要绑定到一个对象,而该对象不包含“-- Select --”的条目。要么您需要在查询期间添加此条目:

SELECT 0 AS ID, '-- Select --' AS Building
UNION ALL
SELECT ID, BUILDING FROM <TABLE>

那么当你绑定的时候你会发现“-- Select --”是第一项

如果您不想更改查询,您可以在检索到数据后向数据表中插入一个新行。

假设您的数据表中只有 2 列(ID 和建筑物):

DataRow row = dtBlds.NewRow();
row[0] = 0;
row[1] = "-- Select --";
dtBlds.Rows.InsertAt(row, 0);

完成此操作后,您可以进行绑定:

cmbBuilding.DataSource = dtBlds;
cmbBuilding.DisplayMember = "Building";
cmbBuilding.ValueMember = "Building";