C# 如何在组合框顶部插入项目?
您好,我正在使用LINQtoSQL绑定组合框控件。如何在组合框列表的顶部添加项目C# 如何在组合框顶部插入项目?,c#,winforms,linq-to-sql,C#,Winforms,Linq To Sql,您好,我正在使用LINQtoSQL绑定组合框控件。如何在组合框列表的顶部添加项目 var items = from c in db.Contacts orderby c.Name ascending select c; if (items.ToList().Count > 0) {
var items = from c in db.Contacts
orderby c.Name ascending
select c;
if (items.ToList().Count > 0)
{
cmb1.BindingContext = new BindingContext();
cmb1.DataSource = items;
cmb1.DisplayMember = "Name";
cmb1.ValueMember = "ID";
}
cmb1.Items.Insert(0, "--Select--");
上述代码失败 将--Selected--项不直接插入combo.items集合,而是插入绑定到组合的项列表
List = linq query;
List.Insert(0, "--Select--");
combo.Datasource = List;
正如您在自己对问题的评论中所指出的,您不能在数据绑定后插入项
一种方法是将包含“选择”项的序列与查询结果连接起来。一种方法是在绑定前将“-Select--”联系人占位符插入结果中:
var items = (from c in db.Contacts
orderby c.Name ascending
select c).ToList();
items.Insert(0, new Contact { ID = 0, Name = "--Select--" });
cmb1.BindingContext = new BindingContext();
cmb1.DataSource = items;
cmb1.DisplayMember = "Name";
cmb1.ValueMember = "ID";
或者,您也可以对结果的匿名版本执行相同的操作:
var items = (from c in db.Contacts
orderby c.Name ascending
select new { c.ID, c.Name }).ToList();
items.Insert(0, new { ID = 0, Name = "--Select--" });
cmb1.BindingContext = new BindingContext();
cmb1.DataSource = items;
cmb1.DisplayMember = "Name";
cmb1.ValueMember = "ID";
所有这些都不起作用。我尝试了所有的方法,最后得到了以下结果。Linq查询输出枚举和列表似乎是不可变的,就像数组一样 我希望你的要求能满足以下要求 cbo.Items.Clear()
在绑定到组合框OnLoad后,在列表顶部添加一个空白选择。环境足迹6
db.Users.Load();
var updateList=db.Users.Local.ToBindingList();Inset(0,新用户{ID=0,UserId=”“});this.userComboBox.DataSource=updateList}
它在什么情况下失败?看起来很好…数据绑定后无法插入项。。。
Region optAll = new Region { RegionName = "All", RegionId = 0 };
var qOrg = (from rows in LDC.Regions orderby rows.RegionName
select new
{
rows.RegionId,
rows.RegionName
}).ToList();
if(needAll)
cbo.Items.Add(optAll);
foreach (var region in qOrg)
{
cbo.Items.Add(region);
}
cbo.DisplayMember = "RegionName";
cbo.ValueMember = "RegionId";