如何使用DataRowState.Deleted?

How to use DataRowState.Deleted?

我有一个删除按钮,可以从 DataGridVeiw 中删除项目并将主 DataTable.Row.RowState 设置为已删除。当我想保存所有更改但无法再从状态已更改的行访问值 (ID) 时,就会出现问题。我给你看代码:

    private void btnRemove_Click(object sender, EventArgs e)
    {
        if (dgvProducts.CurrentRow != null)
        {
            foreach(DataRow row in mIOptions.mProductsOnList.Rows)
            {
                if (dgvProducts.CurrentRow.Cells[2].Value == row[2] && txtProdCode.Text == row[1].ToString())
                {
                    dgvProducts.Rows.Remove(dgvProducts.CurrentRow);
                    row.Delete();
                    break;
                }
            }                
        }
    }

现在检查:

        foreach (DataRow row in mIOptions.mProductsOnList.Rows)
        {
            if (row.RowState == DataRowState.Modified)
            {
                mPresenterOptions.UpdateProduct(row);
            }
            else if (row.RowState == DataRowState.Added)
            {
                mPresenterOptions.SaveProduct(row);
            }
            else if (row.RowState == DataRowState.Deleted)
            {
                mPresenterOptions.DeleteProduct(row); // *row no longer contains the ID (needed to delete from db)*
            }
        }

        mIOptions.mProductsOnList.AcceptChanges();

那么正常的解决方法是什么?

你的replecationg 方法。 .AcceptChanges 使用

foreach(DataRow oRow in  mIOptions.mProductsOnList.Where(x.Rowstate = DataRowState.Deleted))
{
 var rowid = oRow["ColumName", DataRowVersion.Original];
//delete row from database
}
mIOptions.mProductsOnList.AcceptChanges()

接受全部deletions/updates/adds