所以在我的代码中,我有一个删除按钮,然后单击时将从网格中删除选定的行。
这似乎适用于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();
}
}
}
}
我很乐意提供屏幕截图或其他任何必要的内容,只要问一下。
答案 0 :(得分:0)
显然,我需要更新网格。像这样
DataView.Refresh();
我原先假设UI需要刷新。由于UI工作,我很困惑为什么会发生这种情况。但它不只是用于UI,而是用于从DataGridView读取任何值。