foreach (DataGridViewRow row in productData.Rows)
{
    if (productData.Columns["availablequantity"].Index < 0)
    {
        row.Cells[productData.Columns["availablequantity"].Index].Value = (Convert.ToDouble(row.Cells[productData.Columns["availablequantity"].Index].Value) * -1);
    }
    //end of if
    else if (productData.Columns["availablequantity"].Index > 0)
    {
        row.Cells[productData.Columns["availablequantity"].Index].Value = (Convert.ToDouble(row.Cells[productData.Columns["availablequantity"].Index].Value) * 1);
    }
    //end of else if
}

Спасибо за помощь и быстрый ответ!

PS: Я думаю, я только что закончил, это кажется просто глупой маленькой ошибкой ...

screenshot

0
Pavan Poojary 5 Янв 2020 в 10:12
1
Что не так с вашим кодом?
 – 
Sweeper
5 Янв 2020 в 10:13
У меня нет правильного вывода, предположим, что у меня есть значение - тогда он должен преобразовать + right. Это не дает мне такого вывода
 – 
Pavan Poojary
5 Янв 2020 в 10:14
1
Ваше правка меня смутила. Исходя из вашего исходного заголовка (который я пытался прояснить) казалось, что вы хотите преобразовать -1 в 1 и 1 в -1 и т.д., но не похоже, что вам нужно абсолютное значение (отрицательные значения становятся положительными, положительные значения неизменны). Также ваш код, похоже, проверяет индекс (положение) столбца на предмет его значения относительно 0, а не значения ячейки.
 – 
John
5 Янв 2020 в 10:22
Да извините за это.
 – 
Pavan Poojary
5 Янв 2020 в 10:23
Это грубо с моей стороны, вы можете предоставить мне решение с кодом
 – 
Pavan Poojary
5 Янв 2020 в 10:31

2 ответа

Чтобы перебирать каждую строку и ячейку, вы можете использовать цикл foreach. Это то, что тебе надо?

foreach(DataGridViewRow row in yourDataGridView.Rows)
{
  foreach(DataGridViewCell cell in row.Cells)
  {
    //do operations with cell
  }
}
0
Pashupati Khanal 5 Янв 2020 в 13:28
он выдает мне ошибку 31: «System.Windows.Forms.DataGridViewRow» не содержит определения для «ячейки» и метода расширения «ячейка», принимающего первый аргумент типа «System.Windows. Forms.DataGridViewRow '(вам не хватает директивы using или ссылки на сборку?)
 – 
Pavan Poojary
5 Янв 2020 в 13:47
Row.cell ["availablequantity"]. Value = (Convert.ToDouble (row.cell ["availablequantity"]. Value) * -1); "сюда прямо".
 – 
Pavan Poojary
5 Янв 2020 в 13:53
Потому что я новичок в программировании asp .net
 – 
Pavan Poojary
5 Янв 2020 в 13:54
DataGridView находится в формах Windows, в ASP.Net - это GridView. Какое приложение вы создаете.
 – 
Pashupati Khanal
5 Янв 2020 в 14:04
1
Инвентарь продукта
 – 
Pavan Poojary
5 Янв 2020 в 14:21

Вы слишком усложняете задачу. Получите индекс один раз и сохраните его в переменной, а затем просто используйте эту переменную. Если вы меняете знак, все, что вам нужно сделать, это умножить на -1, чтобы код стал следующим:

int idx = productData.Columns["availablequantity"].Index;

foreach (DataGridViewRow row in productData.Rows)
{
    row.Cells[idx].Value = Convert.ToDouble(row.Cells[idx].Value) * -1;
}
0
Jonathan Willcock 5 Янв 2020 в 14:44
Я уже пробовал, но он не дает должного
 – 
Pavan Poojary
5 Янв 2020 в 15:11
Вы попытались отредактировать мой ответ, добавив снимок экрана с выводом. Этот вывод не будет генерироваться моим кодом, поэтому вы, очевидно, делаете что-то другое. К сожалению, у нас нет хрустального шара; мы не сможем вам помочь, если не увидим, что вы делаете неправильно. Пожалуйста, отредактируйте свой вопрос с помощью кода, который вы используете сейчас, покажите нам входные данные, результаты и какими должны быть результаты.
 – 
Jonathan Willcock
5 Янв 2020 в 15:26