组合框默认值winforms c#

时间:2009-08-31 11:55:53

标签: c# winforms combobox

您好,我想动态地将一些值绑定到复选框。

dataset ds = //getting emp values form database;
cbemp.ValueMember = "empid";
cbemp.DisplayMember = "empname";
cbemp.DataSource = ds.Tables["emp"];

工作正常。但我想添加

“选择emplyoee”作为复选框的默认值。

但是我的复选框直接添加了

之类的值

A1
A2
A3

像这样。

我试过这个

cbemp.Items.Insert(0, "Select emplyoee");

但它不起作用

我该如何添加它?

7 个答案:

答案 0 :(得分:8)

使用数据绑定时,无法“手动”添加或删除项目。使用数据绑定实现所需目的的唯一方法是在DataTable中首先插入具有所需值的行,或者通过代码填充组合框(添加“选择员工”项,然后迭代{ {1}}行添加记录。)

也许这样的事情可行:

DataTable

我没有太多使用数据绑定,所以我可能没有意识到这一点(但我相信社区会在那种情况下指出这一点)。

答案 1 :(得分:4)

在数据源中插入数据是个坏主意。它会促进破坏图层的抽象,如果您在其他地方使用相同的数据源,可能会导致一些问题。

相反,当没有选择项目时,您可以轻松扩展ComboBox以显示“请选择”消息。

我在博客上发表了关于此问题的博客,并在此处提供了代码:http://www.byteauthor.com/2010/08/inner-label-in-combobox/

答案 2 :(得分:0)

我认为您必须将它添加到基础数据表(ds.Tables [“emp”]),以便在您使用数据绑定控件时它在列表中显示为条目。

答案 3 :(得分:0)

当您的控件是数据绑定时,我认为您无法手动添加项目。

要解决此问题,您可以向数据源添加新项目,也可以手动添加项目。

答案 4 :(得分:0)

以上接受的解决方案更好,但有时可能会派上用场的一个技巧是将“假”记录联合到返回数据绑定记录集的SQL。在这种情况下,例如:

select 0 as empid, 'Please select' as empname
union
select empid, empname from emp
order by empid

当然,您必须保护数据库不会意外地写回“0”记录(例如,如果用户没有做出选择),但这并不太难。

答案 5 :(得分:0)

如果ComboBoxStyle设置为DropDownList(因此用户无法编辑组合框),那么确保用户选择项目的最简单方法是设置selectedIndex = -1,您可以随时在组合框上添加“请选择”等。< / p>

答案 6 :(得分:0)

在我的情况下(databinded组合框)我解决了这样的问题。当然最好的方法是Kevin Coulombe。

ComboBox.SelectedIndex = -1;
ComboBox.Text = "Please, select something";

使用一些代码,您可以轻松管理此方案。

相关问题