WinForm组合框添加文本“;选择“;数据绑定后
本文关键字:选择 数据绑定 文本 组合 添加 WinForm | 更新日期: 2023-09-27 18:19:31
在我的窗体中,我有一个控件ComboBox。我想在数据绑定后添加文本"选择"。我试试这个
cbOperatorList.DataSource = operatorService.GetOperatorList();
cbOperatorList.Items.Insert(0, "Select");
但当我这样做的时候。我得到例外什么
如果设置了属性,则无法更改项的集合DataSource。
更新
public BindingList<Operator> GetOperatorList(string filter = "")
{
return
new BindingList<Operator>(
this.operatorRepository.All.Where(
item => item.FirtsName.Contains(filter) || item.LastName.Contains(filter) || item.MiddleName.Contains(filter)).
ToList());
}
更新
我解决了这个问题,使用这个代码
cbOperatorList.DataSource =
this.operatorService.GetOperatorList().Concat(new[] { new Operator { LastName = "Select", Id = 0 } }).OrderBy(
item => item.Id).ToList();
如果GetOperatorList()
返回一个不可变的IEnumerable<T>
,则可以使用linq将其与new object[] { "Select" }
连接。假设T
不是object
,则必须强制转换:
cbOperatorList.DataSource = operatorService
.GetOperatorList()
.Cast<object>()
.Concat(new object[] { "Select" });
编辑
如果您希望单词"Select"出现在开头,请反转连接:
cbOperatorList.DataSource = (new object[] { "Select" })
.Concat(
operatorService.GetOperatorList().Cast<object>()
);
您没有描述GetOperatorList()
返回的内容,但您可以先设置一个变量来获取该列表,并在列表中插入您的项,然后将DataSource设置为该变量。
您必须重构代码来处理这个"Select"项,以免与运算符对象混淆。