【问题标题】:DataGridView ComboBox column not accepting new valuesDataGridView ComboBox 列不接受新值
【发布时间】:2016-08-09 07:35:44
【问题描述】:

我的 Windows 窗体应用程序中有一个 DataGridView 控件,允许用户编辑产品列表。要编辑产品类别,我希望用户添加新条目或从之前已输入的条目中进行选择。为了实现这一点,我添加了一个绑定到 DataSourcecomboBox 列,该列从 products 表中获取不同的类别名称。在其他一些 SO 问题的帮助下,我能够使用此代码使 comboBox 可编辑:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (dataGridView1.CurrentCell.ColumnIndex == CategorySelector.Index)
    {
        ComboBox combo = e.Control as ComboBox;
        if (combo == null)
            return;
        combo.DropDownStyle = ComboBoxStyle.DropDown;
    }
}

但问题是,当我尝试编辑类别comboBox 列并添加未列出的新类别时,当我切换到其他单元格时,它会切换回现有产品的旧类别项目或新产品的空白产品。请告诉我如何通过comboBox 列添加新类别?

【问题讨论】:

  • 发布您尝试添加类别的代码。
  • @RezaAghaei 我正在使用自动生成的DataGridView 方法进行添加。
  • DataGridViewComboBoxColumn 仅显示其DataSource 的项目。因此,如果您希望它在列表中显示一个新项目,您应该在其数据源中添加一个新项目。
  • 是的,但是如何使用DataGridView 来完成呢?我希望用户编辑组合框列以添加新类别。
  • @RezaAghaei 请看看我的回答。

标签: c# .net winforms datagridview combobox


【解决方案1】:

最后我自己解决了。我实现了comboBoxLostFocus 事件,我在其中添加了用于更新绑定DataSet 与新项目的代码。

项目已成功添加,但仍然存在一个问题。该项目在添加后未被选中。 ComboBox 仍会重置为之前的选择。但是,我可以手动选择新项目。但是如果你能解决这个错误,它将成为一个更好的用户体验。以下是我如何实现新项目添加:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (dataGridView1.CurrentCell.ColumnIndex == CategorySelector.Index)
    {
        ComboBox combo = e.Control as ComboBox;
        if (combo == null)
            return;
        combo.DropDownStyle = ComboBoxStyle.DropDown;
        combo.LostFocus += combo_LostFocus;
    }
}
void combo_LostFocus(object sender, EventArgs e)
{
    ComboBox c = (ComboBox)sender;
    if (c.FindStringExact(c.Text.Trim().ToLower()) == -1)
    {
        inventoryCategorySet.Tables[0].Rows.Add(c.Text.Trim().ToLower());
        inventoryCategorySet.AcceptChanges();
    }
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    相关资源
    最近更新 更多