【问题标题】:How to set combobox first element in winform application in c#如何在c#中的winform应用程序中设置组合框的第一个元素
【发布时间】:2015-12-14 06:33:06
【问题描述】:

我是 Winform 应用程序的新手,这里我使用实体框架,当我将值从 sql 表绑定到组合框时,我需要将第一个组合框项设置为“请选择”,我该如何设置..?

var qry = context.Tbl_EmployeeDetails.Where(x => x.IsDeleted == false).ToList();          
            if(qry!=null)
            {                
                drpname.ValueMember = "RecordId";
                drpname.DisplayMember = "Name";              
                drpname.DataSource = qry;                          
            }

如何将第一项设置为“请选择”并设置值为 '0'

winform 中的另一个建议.. 当我设置“编辑”、“删除”列作为链接​​按钮时,如何在 datagridview 链接按钮列中设置值

【问题讨论】:

  • 关于“winform 中的另一个建议..当我设置“编辑”时,如何在 datagridview 链接按钮列中设置值,“删除”列作为链接​​按钮”您可以设置这些单元格的值到“编辑”和“删除”。由于这个问题可能对其他用户也有用,所以最好在 StackOverlow 中提出另一个问题:)
  • 好的..现在就做..@RezaAghaei

标签: c# .net winforms entity-framework combobox


【解决方案1】:

如果您将组合框绑定到数据源,您的组合框不能包含其他项目。你有几个选择:

  1. 不要将其绑定到数据源,即通过遍历查询中的项目并将它们单独添加到组合框中,从数据集中手动填充它;这将使您有机会首先添加“请选择”项目。这可能很复杂,因为您实际上必须将字符串名称添加为组合框中的项目,然后您可以将项目的 Tag 属性设置为实际查询行以供以后引用。

  2. 包括一个从您的查询返回的假项目,该项目具有“请选择”的显示成员。请注意,我不推荐这种方法,因为您允许您的表示逻辑泄漏到您的数据/业务层中。

  3. 使用第三方控件而不是 win 表单组合框。我使用了 Infragistics,当未选择任何内容时,它们能够显示实际上不在列表中的“建议”。

【讨论】:

    【解决方案2】:

    在你加载你的 var qry 之后,这将是一个 List<string> 您想要执行以下操作

    var qry = context.Tbl_EmployeeDetails.Where(x => x.IsDeleted == false).ToList();   
    
    if(qry!=null)
    {                
        drpname.ValueMember = "RecordId";
        drpname.DisplayMember = "Name";              
        drpname.DataSource = qry;  
        drpname.Items.Insert(0, "--Please Select--");   
        drpname.SelectedIndex = 0;                     
    }
    

    或者您可以轻松地将其添加到 qry,因为您正在返回数据 ToList()

    例如

    var qry = context.Tbl_EmployeeDetails.Where(x => x.IsDeleted == false).ToList();   
    qry.Insert(0, "--Please Select--");
    
    if(qry!=null)
    {                
        drpname.ValueMember = "RecordId";
        drpname.DisplayMember = "Name";              
        drpname.DataSource = qry; 
        drpname.SelectedIndex = 0; 
    }
    

    【讨论】:

    • 请添加一些解释为什么此代码有助于 OP。这将有助于为未来的观众提供一个可以学习的答案。请参阅How to Answer 了解更多信息。
    【解决方案3】:

    您可以将该项目插入列表的开头。

    代码:

    var items = db.Tbl_EmployeeDetails.Where(x => x.IsDeleted == false).ToList();
    items.Insert(0,new Tbl_EmployeeDetail() { RecordId= 0, Name = "[Please Select an Item]" });
    
    drpname.DropDownStyle = ComboBoxStyle.DropDownList; //optional
    drpname.ValueMember = "RecordId";
    drpname.DisplayMember = "Name";
    drpname.DataSource = items;
    drpname.SelectedIndex = 0;
    

    截图:

    注意

    要在ComboBox 中获得提示而不添加项目,请查看以下帖子:

    【讨论】:

    • 谢谢你先生..这段代码工作正常..正是我所期待的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2022-11-27
    • 2022-11-16
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多