为什么在我对列进行排序后要添加到 DGV 的列中的单元格中的数据消失了?

Why is data disappearing from cells in a column I'm adding to a DGV after I sort a column?

我有一个 DataGridView,我通过将它绑定到从 sql 查询返回的 DataTable 来填充它,正如您所期望的那样工作。

稍后,如果用户希望通过单击按钮在 DataGridView 中查看其他信息,我会手动将一列添加到 DataGridView 的末尾 - dgvOrders.Columns.Add("profit", "Profit"); 并根据其他人确定的逻辑用数据填充它DataGridColumns 单元格值。

一切正常,直到您单击其中一列 headers 对数据进行排序,此时数据已正确排序,但新列中的每个单元格都失去了它的值并显示为空。最重要的是,我似乎也根本无法通过我的新专栏进行过滤。 no-no 手动将列​​添加到数据绑定的 DataGridView 还是我在这里遗漏了其他内容?

首先,我强烈建议您分享您的代码,看起来比猜测要容易得多。听起来您的问题出在数据绑定上。我个人不喜欢直接使用数据网格。在您的模型或适配器上工作然后重新绑定要容易得多:

..your model container or adapter, e.g. SqlDataAdapter gets updated here...
DataTable dt = new DataTable();
adapter.Fill(dt);
dgvOrders.DataSource = dt;
dgvOrders.Columns.Add("yourcolumn", "yourcolumn");

否则,如果您更喜欢直接在 dgvOrders 上工作,请执行类似的操作:

dgvOrders.Columns.Add(new BoundField { DataField = "yourcolumn"})
dgvOrders.DataSource = yourdatasource; 
dgvOrders.DataBind(); //dont forget to databind again!