【问题标题】:How to add empty or custom value to a bound combobox?如何向绑定的组合框添加空值或自定义值?
【发布时间】:2010-11-29 19:29:34
【问题描述】:

我正在使用 System.Windows.Forms.Combobox 绑定到类别表作为搜索条件。我需要有一个值“All”或空字符串,当用户不想使用此条件时将选择它。由于combo是绑定的,每次点击,combo1.Text =“All”添加的值都会被删除。显然,我不能将“全部”类别添加到数据库中。实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: .net data-binding combobox


    【解决方案1】:
    1. 如果您不想将“全部”项添加到数据源中,可以执行以下操作:

    代码片段

    comboBox1.Text = "All";
    

    它将组合框中显示的文本设置为分配的值,但不更改组合框中的项目和绑定的数据源。

    1. 您也可以将“全部”添加到您的数据源。但你应该这样做:

    代码片段

    private void button1_Click(object sender, EventArgs e)
    
    {
    
    DataRow dataRow = dataTable.NewRow();
    
    dataRow["ItemId"] = "All";
    
    dataTable.Rows.InsertAt(dataRow, 0);
    
    comboBox1.SelectedIndex = 0;
    
    }
    

    最简单的方法是在 ds.Tables[0] 中插入一行

      ds = StockDAL.BindItemId();
    
      DataRow dataRow = ds.Tables[0].NewRow();
    
      dataRow["ItemId"] = "All";
    
      ds.Tables[0].Rows.InsertAt(dataRow, 0);
    
      comboBox1.DataSource = ds.Tables[0];
      comboBox1.DisplayMember = "ItemId";
      comboBox1.ValueMember = "ItemId";
      comboBox1.selectedIndex=0;
    

    希望这能解决你的问题..

    【讨论】:

      【解决方案2】:

      在加载其他值后手动将 All 条目添加到绑定的数据集,或者取消绑定组合并迭代数据以填充它。它只是一个搜索组合,因此您并不真正需要绑定的所有好处。

      【讨论】:

      • 我尝试使用 ComboBox1.Items.Insert(0,"All") 手动填充,但后来收到 null SelectedValue。
      • 这就是为什么我说将它添加到数据集而不是组合框。
      【解决方案3】:

      您必须添加另一个项目:

      ComboBox1.Items.Insert(0,"All");
      

      【讨论】:

      • 我收到一个错误:设置 DataSource 属性时无法修改项目集合。
      • 我担心会发生这种情况。如果您将项目直接从数据集设置到数据源,它会锁定 Items 属性。一种可能的解决方案是遍历数据集中的项目集合并通过 Items.Insert 添加它们
      • 我尝试使用 ComboBox1.Items.Insert(0,"All") 手动填充,但后来我收到 SelectedValue 为空。我可以将 Item 转换回原始对象,但对于这么简单的事情来说,这是很多代码......
      【解决方案4】:
      1. 如果您使用的是 sql server,那么您可以为 All 选项的 select 命令添加额外的值
      2. 或者您可以通过使用comboBox1.Items.Insert(0,"All") 添加所有选项来添加新项目作为零索引。绑定控件后

      希望这会有所帮助。

      【讨论】:

      • 在第二个选项中,这意味着我不能使用设计器设置绑定选项?我已将 ComboBox1.Items.Insert(0,"All") 放置在表单加载中,但出现“设置 DataSource 属性时无法修改项目集合”错误。
      • 我认为你应该使用第一个选项,当你选择项目时,你可以在那里添加所有选项,在 web 下拉列表控件中可以添加新项目。
      【解决方案5】:

      我总是在数据绑定之前“手动”将项目添加到数据源。这样可以避免在数据源的查询中包含“人工”数据,因此如果您将查询用于下拉菜单以外的其他内容,则只能获得真实数据。

      【讨论】:

        【解决方案6】:

        你可以试试这个

        ComboBox1.Items.Insert(0,"All");
        

        在插入表格时,您只需检查 ComboBox1 的选定索引 即,

        if(ComboBox1.SelectedIndex>0)
        {
        //do the insert code here
        }
        else
        {
        //dont do anything
        }
        

        这会很好......

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-03
          • 2010-12-12
          相关资源
          最近更新 更多