ComboBox C#中的默认值DataSource

时间:2013-12-16 14:57:34

标签: c# combobox

我有一个ComboBox,这就是我填充数据的方式:

SectorCollection sectorCollection = sectorController.SearchAll();

comboSector.DataSource = null;

comboSector.DataSource = sectorCollection;
comboSector.DisplayMember = "titleSector";
comboSector.ValueMember = "idSector";

我想要的是设置一个预数据,就像组合框中没有值的文本一样。 比如“选择一个部门”。因此用户可以知道他正在选择什么。

3 个答案:

答案 0 :(得分:4)

DataBind()

之后,只需在索引0处插入一个新项目作为默认值
comboSector.DataSource = sectorCollection;
comboSector.DisplayMember = "titleSector";
comboSector.ValueMember = "idSector";
comboSector.DataBind();

comboSector.Items.Insert(0, "Select a Sector.");

如果这是WinForms(您还没有说过),则在分配到组合框之前,您将在索引0处向sectorCollection添加新项目。所有其他代码保持不变:

sectorCollection.Insert(0, new Sector() { idSector = 0, titleSector = "Select a sector." });

答案 1 :(得分:3)

如果您使用的是WinForm组合框,那么您应该编写类似这样的代码

sectorCollection.Insert(0, new Sector() {idSector=0, titleSector="Select a sector"})

comboSector.DataSource = sectorCollection;
comboSector.DisplayMember = "titleSector";
comboSector.ValueMember = "idSector";

您需要将选择提示添加为添加到集合中的新Sector实例,然后将集合绑定到组合框。当然,如果您将该集合用于组合显示中的其他部分

,则可能会出现问题

答案 2 :(得分:2)

我认为不是添加一个虚拟项目,而是一直位于列表顶部,只需将SelectedIndex设置为-1并添加文本:

comboBox1.SelectedIndex = -1;
comboBox1.Text = "Select an item";