我遇到了一些奇怪的事情,或者可能是它的工作方式,只是我对datagridview的工作方式缺乏了解。当我点击按钮时,我正在动态添加一列
private void btnAssign_Click(object sender, EventArgs e)
{
if (!gvData.Columns.Contains("DepartmentId"))
{
DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();
DataGridViewColumn dc = new DataGridViewColumn();
dc = new DataGridViewTextBoxColumn();
dc.HeaderText = "DepartmentId";
dc.Name = "DepartmentId";
dc.CellTemplate = cell;
gvData.Columns.Add(dc);
}
foreach(DataGridViewRow row in gvData.SelectedRows)
{
row.Cells["DepartmentId"].Value = getSelectedValues(clbDept);
}
}
首先检查DepartmentId列是否在datagridview(dgv)中。如果没有,那么我创建一个新的Datagridviewtextboxcolumn并设置适当的设置。然后向单元格添加值。非常好......这就是奇怪的事情......当我对另一列进行排序时,'DepartmentId'列中的数据会消失。数据在我动态创建的列中消失。我必须使用保存方法吗?
答案 0 :(得分:0)
您需要将数据列添加到数据源并将数据源重新分配给datagridview,而不是直接向datagridview添加数据。这将解决您的排序问题。