Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在组合框顶部插入项目?_C#_Winforms_Linq To Sql - Fatal编程技术网

C# 如何在组合框顶部插入项目?

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) {

您好,我正在使用LINQtoSQL绑定组合框控件。如何在组合框列表的顶部添加项目

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";