Обновление значения ячейки в Datagridview на основе значения другой ячейки - PullRequest
0 голосов
/ 04 октября 2019

если у меня есть DataGrid с 4 столбцами, как вы можете видеть

Col1  Col2  Col3  Col4    
5000   -     -    3250    
3250   -     -    2300    
2300   -     -    result

Col1 имеет значение, а Col2 и Col3 составляют формулу для этого значения. Col4 выводит результат. Я хочу установить этот результат для следующей ячейки на Col1 и снова на Col2,3, применить формулу и т. Д.

Я пробовал следующий фрагмент кода, но он применяется ко всем ячейкам в столбце.

for (int i = 1; i < dgv.Rows.Count; i++)
{
   dgv.Rows[i].Cells[1].Value = result;
}

1 Ответ

0 голосов
/ 07 октября 2019

Было немного трудно понять, что вы ищете. Кажется, вы хотите ввести результат Column3 из предыдущего ряда в следующий ряд. Это можно сделать следующим образом:

C #:

for (var ir = 1; ir <= dgv.Rows.Count - 1; ir++)   // note we're starting on the *2nd* row
{
    dgv.Rows(ir).Cells("Col1").Value = dgv.Rows(ir - 1).Cells("Col3").Value;// or another result from your previous row...
}

VB.NET:

    For ir = 1 To dgv.Rows.Count - 1   ' note we're starting on the *2nd* row
        dgv.Rows(ir).Cells("Col1").Value = dgv.Rows(ir - 1).Cells("Col3").Value   ' or another result from your previous row...
    Next

Вместо зацикливания целого DataGridview, вы также можете добавитьвычисление одного DataGridViewCell (ячеек) для правильного события. Но вы не заметите различий в производительности, если у вас много строк.

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

DataGridViewRow dr;
dr = dgv.Rows(ir);

и применить его:

dr.Cells("Col1").value = result;

Кроме того, вы должны выполнять операциидля значений в DataTable, установленных для DataGridView DataSource, а не для самого DataGridView. Чтобы избежать использования неправильных типов данных из-за производительности (когда у вас много строк) и т. Д.

...