组合框C#中的默认值DataSource

本文关键字:默认值 DataSource 组合 | 更新日期: 2024-10-07 13:53:23

我有一个组合框,这就是我在其中填充数据的方式:

SectorCollection sectorCollection = sectorController.SearchAll();
comboSector.DataSource = null;
comboSector.DataSource = sectorCollection;
comboSector.DisplayMember = "titleSector";
comboSector.ValueMember = "idSector";

我想要的是设置一个预数据,就像组合框中没有值的文本。比如"选择一个扇区",这样用户就可以知道自己在选择什么。

组合框C#中的默认值DataSource

只需在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." });

我认为,与其添加一个总是在列表顶部的伪项,不如将SelectedIndex设置为-1并添加文本:

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

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

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

您需要将选择提示添加为添加到集合中的新Sector实例,然后将集合绑定到组合框。当然,如果您将集合用于其他目的,则这可能是一个问题-组合显示的一部分