【问题标题】:c# DataGridView update cell valuec# DataGridView 更新单元格值
【发布时间】:2017-03-25 16:34:59
【问题描述】:

我用 C# 编写代码,在 DataGridView 中显示 List 的值:

我有这个清单:

List<Order> list = new List<Order> { new Order("Fettina ai Ferri", ""), new Order("1 X", "0.99") };

此列表显示在 datagridview (ordersDtaGrid) 中:

var source = new BindingSource();
source.DataSource = list;
ordersDtaGrid.DataSource = source;

有效。

现在我更改列表中的一个值:

list[1].name = "4 X"

我想更新数据网格:

var source = new BindingSource();
source.DataSource = list;
ordersDtaGrid.DataSource = source;

这是数据网格中的结果:

既有旧值又有新值。

我也尝试添加:

ordersDtaGrid.Refresh();
ordersDtaGrid.Focus();

但没什么。

我该如何解决这个问题。

谢谢。

【问题讨论】:

  • 你是用DataGridVIew还是DataGrid控制?它们是不同的控件,其中DataGridView 是较新的控件。有没有一些自定义的绘图方法
  • 如果你让Order 类实现INotifyPropertyChanged 接口而不是List 将使用BindingList&lt;Order&gt; - 那么你不需要在每次更新某些属性时“重置”数据源。 BindingList 将引发一个事件,DataGridView 将监听它并自动更新视图
  • 我正在使用 DataGridView。
  • 它正在使用新值进行更新,但旧值仍然隐藏。在图中,请参见“4 X”而不是“1 X”。也许datagridview没有升级单元格内容。
  • 如果我双击单元格,它会显示正确的值。

标签: c# datagridview datagrid


【解决方案1】:

也许下面会有所帮助:

list.Clear();
ordersDtaGrid.DataSource = list;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 2011-12-25
    • 1970-01-01
    相关资源
    最近更新 更多