【问题标题】:Datagridview Winforms Add or Delete Rows in Edit Mode with Collection BindingDatagridview Winforms 在编辑模式下使用集合绑定添加或删除行
【发布时间】:2011-03-12 15:01:26
【问题描述】:

在我的 datagridview 中,我绑定了一个名为“ProductLine”的对象列表。但不幸的是,使用这种方法,我无法在编辑模式下将行“添加”或“删除”到 datagridview。当我创建一个新订单时,我可以添加或删除行,但是一旦我保存它并尝试在编辑中打开它,它就不允许我“添加”或“删除”(通过键盘)。

有什么想法吗?

下面是代码:

如果是新订单,我会这样做:

private void Save(){
   for (int i = 0; i <= dtgProdSer.RowCount - 1; i++)
   {
      if ((itemList != null) && (itemList.Count > i))
           productLine = itemList[i];
      else
           productLine = new ProductLine();
      productLine.Amount = Convert.ToDouble(dataGridViewTextBoxCell.Value);
    }
}

如果是编辑,那么在 Form_Load 中检查 ProductId 是否为零,然后执行以下操作:

private void fillScreen{
    dtgProdSer.DataSource = itemList;
}

但是我不能在编辑模式下添加或删除行。

非常感谢任何建议。

【问题讨论】:

    标签: c# winforms data-binding datagridview


    【解决方案1】:

    您尚未显示 itemList 是什么类型,但我将假设它不是 ObservableCollection。在这种情况下,您需要将列表包装在绑定源中:

            var list = new List<ProductLine>(5);
            list.Add(new ProductLine { Amount = list.Count });
            list.Add(new ProductLine { Amount = list.Count });
            list.Add(new ProductLine { Amount = list.Count });
            list.Add(new ProductLine { Amount = list.Count });
            list.Add(new ProductLine { Amount = list.Count });
    
            var bs = new BindingSource {DataSource = list };
            dataGridView1.DataSource = bs;
    

    FWIW,这是一个很好的问题。浏览屏幕右侧的相关部分可能会更快地回答您的大多数 DataGridView 问题。对于新问题,搜索 SO 是很好的第一步。

    【讨论】:

      猜你喜欢
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多