DataGridView Редактировать только 1 строку в столбце - PullRequest
1 голос
/ 10 октября 2019

У меня есть домашняя работа, я почти закончил все это, но я не мог получить это, это мои столбцы представления сетки данных

Name , Price , Quantity , Total , button(to increase) , button (to decrease)

в представлении таблицы данных я сделал кнопку, когда я дважды щелкнул покнопка увеличения, количество будет увеличиваться на 1 каждый раз, поэтому я сделал этот код для этого

foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            row.Cells["Qty"].Value = Convert.ToDouble(row.Cells["Add"].Value) + Convert.ToDouble(row.Cells["Qty"].Value) + 1;
        }

, но он делает столбец «Весь», если у меня есть 2 строки, когда я дважды щелкаю по нему, количество обеих строк равноувеличение, как я могу изменить этот код до 1 строки для кнопки

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

Вы перебираете все строки с помощью оператора for.

Вы должны использовать свойство CurrentCell.RowIndex для получения текущей выбранной строки.

Таким образом, ваш код должен выглядеть следующим образом:

var row = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex];
row.Cells["Qty"].Value = Convert.ToDouble(row.Cells["Add"].Value) + Convert.ToDouble(row.Cells["Qty"].Value) + 1;
1 голос
/ 10 октября 2019

проблема в foreach.
в событии кнопки нужно получить индекс строки.
Вы можете получить индекс строки с помощью

 var index = datagridview.CurrentCell.RowIndex;

Чем вы можете сделать что-то подобное:

dataGridView1.Rows[index].Cells["Qty"].Value = 
Convert.ToDouble(dataGridView1.Rows[index].Cells["Add"].Value) 
+ Convert.ToDouble(dataGridView1.Rows[index].Cells["Qty"].Value) + 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...