如何在C#windows应用程序中使用默认值0的文本“SELECT”在组合框中插入第一个项目

问题描述 投票:0回答:3

我正在使用C#windows应用程序。我的代码如下

var categoryList = _objCategoryManager.GetAll();
cmbCategory.DisplayMember = "Name";
cmbCategory.ValueMember = "Id";
cmbCategory.DataSource = categoryList;

这里categoryList的类型为IEnumerable。我想在0指数的ComboBox中插入项目,即“ - SELECT--”

c# .net ienumerable
3个回答
4
投票

数据绑定后,您无法将项目插入ComboBox。而是在之前将项目插入数据源的副本中,然后执行绑定。

如果categoryListIEnumerable<T>而不是List<T>,那么你应该将它复制到List<T>,以便你可以在第一个索引处添加你的默认值:

var categoryList = _objCategoryManager.GetAll().ToList();
categoryList.Insert(0, new Category {Id = -1, Name = "--SELECT--"});

4
投票

只需将其插入列表即可

var categoryList = _objCategoryManager.GetAll().ToList();
cmbCategory.DisplayMember = "Name";
cmbCategory.ValueMember = "Id";

categoryList.Insert(0, new Category() { Name = "--SELECT--"} );

cmbCategory.DataSource = categoryList;

0
投票
categoryList.ToList().Find(o => o.ID == Convert.ToInt32(0)).Name = "--SELECT--";

使用LINQ,您可以找到要更改的对象(绑定后)并修改该项。

否则,如果要将对象添加到列表中:

categoryList.ToList().Add(obj); // This should show the new item in the combo box

最终你的.GetAll()方法应该将第一个返回为“--SELECT--”而不是之后尝试修改它。

© www.soinside.com 2019 - 2024. All rights reserved.