Сравнение измененной ячейки DataGridView с исходным значением DGV в этой ячейке - PullRequest
1 голос
/ 09 апреля 2020

В C# проекте WinForms я пытаюсь выделить ячейку, в которой пользователь изменяет значение (изменить BackColor) для последующего просмотра, чтобы позволить пользователю откорректировать любые внесенные изменения, а затем, наконец, сохранить эти изменения. ячейки в базе данных по нажатию кнопки.

Я использовал событие CellValueChanged DGV для вызова функции, которая проверит изменения и выделит измененную ячейку. Событие CellValueChanged выглядит следующим образом:

private void dgvCategories_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    CompareDgvToDataTable(dtCategories, e.RowIndex, e.ColumnIndex);
}

CompareDgvToDataTable() в данный момент выглядит следующим образом:

private void CompareDgvToDataTable(DataTable dt, int intRowIndex, int intColumnIndex)
{
    if (dt.Rows[intRowIndex][intColumnIndex].ToString() != dgvCategories.Rows[intRowIndex].Cells[intColumnIndex].Value.ToString())
    {
        // Change the BackColor
    }
}

dtCategories - это переменная, доступная для всей формы, и она (пере) заполняется всякий раз, когда DGV перестраивается. Как видите, я пока ничего не делаю. Я просто пытаюсь убедиться, что получаю правильную ячейку и могу сейчас правильно сравнить исходные и отредактированные пользователем значения.

Однако мое сравнение не ведет себя так, как я ожидал.

Я предполагал, что DataTable DGV не изменится, пока не будет перезагружен источник данных DGV, но это, очевидно, не тот случай. Приведенная выше проверка if () всегда оценивается как ложная (обе стороны сравнения имеют одно и то же значение), поскольку ячейка DataTable и соответствующая ячейка DGV в этой точке совпадают.

Как получить доступ к оригиналу значение, с которым был загружен DGV, чтобы сравнить его с тем, на что пользователь изменяет его - в том числе, если пользователь изменяет значение обратно на исходное значение DataTable?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...