C#DataGridView:值在动态添加列中消失

时间:2013-08-15 15:42:42

标签: c# datagridviewcolumn

我遇到了一些奇怪的事情,或者可能是它的工作方式,只是我对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'列中的数据会消失。数据在我动态创建的列中消失。我必须使用保存方法吗?

1 个答案:

答案 0 :(得分:0)

您需要将数据列添加到数据源并将数据源重新分配给datagridview,而不是直接向datagridview添加数据。这将解决您的排序问题。