DataGridView已移除的行单元格仍显示在代码中,即使从Grid中删除也是如此

时间:2014-07-17 08:34:03

标签: c# winforms

所以在我的代码中,我有一个删除按钮,然后单击时将从网格中删除选定的行。

这似乎适用于UI级别。

但是当我不得不从网格中的单元格重新获得数据时,我刚删除的东西仍然在那里。我学习了这个,因为我在调试模式下逐行循环。

My Base算法来自this stackoverflow post的第一个答案。 现在,我查看了MSDN here关于RemoveAt实际执行的操作 不幸的是,它并不是很有启发性。

 Removes the row at the specified position from the collection.

这是我的代码。

private void Delete_Click(object sender, EventArgs e)
    {  

        if (this.DataView.SelectedRows.Count > 0)
        {
            foreach (DataGridViewRow item in DataView.SelectedRows)
            {
                DataView.Rows.RemoveAt(item.Index);

            }

        }

        refreshDataFromGrid();
    }

现在,这里是从Grid中的内容派生数据的部分

    private void refreshDataFromGrid()
    {
        //if the rows in the gridview aren't empty copy them over to the String array in d.value
        for (int i = 0; i < DataView.Rows.Count; i++)
        {
            for (int j = 0; j < DataView.Rows[i].Cells.Count; j++)
            {
                if (DataView.Rows[i].Cells[j].ToString() != "")
                {
                    (DataViewParent as STS_Console.MenuItems.MenuItem).d.Value[i, j] = DataView.Rows[i].Cells[j].Value.ToString();

                }
            }                                                                                                       

        }

    }

我很乐意提供屏幕截图或其他任何必要的内容,只要问一下。

1 个答案:

答案 0 :(得分:0)

显然,我需要更新网格。像这样

         DataView.Refresh();

我原先假设UI需要刷新。由于UI工作,我很困惑为什么会发生这种情况。但它不只是用于UI,而是用于从DataGridView读取任何值。