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

时间:2015-02-12 09:28:06

标签: c# datagridview

我有一个DataGridView,我通过将它绑定到从SQL查询返回的DataTable来填充,这可以按照您的预期工作。

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

这一切都完美无缺,直到您单击其中一个列标题对数据进行排序,此时数据正确排序但是我的新列中的每个单元格都丢失了它的值并显示为空。最重要的是,我似乎无法根据我的新专栏进行过滤。将数据块手动添加到数据绑定DataGridView是否是禁止,或者我在这里缺少其他内容?

1 个答案:

答案 0 :(得分:1)

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

..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!