Как сохранить исходное значение при редактировании ячейки столбца таблицы данных? - PullRequest
1 голос
/ 24 апреля 2019

У меня есть сетка, которая показывает список продуктов со следующими столбцами:

ProductId,ProductName,MRP,FinalAmount

Теперь я оставил ППМ доступным для редактирования, чтобы пользователь мог изменить его на основе скидки на некоторые продукты. Я сохранил проверку в столбце ППМ, чтобы пользователь не мог ввести null value, но проблема заключается в том, что я поднял сообщение проверки исходное значение ППМ - LOST .

Так что я пытаюсь сделать, когда пользователь вводит отрицательное / нулевое значение, тогда я хочу показать сообщение и сохранить последнее значение ППМ.

Код:

private void grdProductList_CellEndEdit_1(object sender, DataGridViewCellEventArgs e)
        {
                if (grdProductList.CurrentCell == null ||
                            grdProductList.CurrentCell.Value == null ||
                            e.RowIndex == -1) return;

                if (grdProductList.CurrentCell.ColumnIndex.Equals(3))//MRP
                {
                    if(string.IsNullOrEmpty(grdProductList.Rows[grdProductList.CurrentRow.Index].Cells["MRP"].Value.ToString()))
                    {
                        MessageBox.Show("MRP cannot be empty.Please provide value", "Error");
                        return;
                    }

                    decimal.TryParse(grdProductList.Rows[grdProductList.CurrentRow.Index].Cells["MRP"].Value.ToString(), out decimal mrp);
                    if(mrp < 0)
                    {
                        MessageBox.Show("MRP cannot have negative value", "Error");
                        return;
                    }
                    grdProductList.Rows[grdProductList.CurrentRow.Index].Cells["FinalAmount"].Value = mrp;
                    //calculation code based on mrp
                }
       }

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Я обнаружил, что DataGridView предоставляет метод с именем CancelEdit , который отбрасывает изменения и также помогает сохранить исходное значение.

Мне просто нужно вызвать этот метод, как показано ниже, и получил ожидаемыйповедение:

if(string.IsNullOrEmpty(grdProductList.Rows[grdProductList.CurrentRow.Index].Cells["MRP"].Value.ToString()))
                    {
                        MessageBox.Show("MRP cannot be empty.Please provide value", "Error");
                        grdProductList.CancelEdit();
                        return;
                }
0 голосов
/ 24 апреля 2019

Сохранение исходного значения MRP во временной переменной. Если пользователь ввел нулевое или отрицательное значение, восстановите временное значение в текущей ячейке сетки

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