c # Расчет строки Datagridview

У меня есть форма Windows с Datagridview, содержащая данные из XML-файла. DGV настроен следующим образом: Дата, Продукт, Цена.

Есть 10 строк данных.

Я пытаюсь рассчитать изменение цены от одной строки к другой и с трудом нахожу решение. Например:

1/1/12, ABC, $2.00
1/1/12, ABC, $2.50

Net Change: .50

Для столбцов я могу использовать Table.Columns.Expression, но мне неясно, как я могу выполнить этот расчет, вычитая предыдущий против текущего.

Я думал об итерации по столбцам, добавлении в новую таблицу и вычислении ее таким образом, но это похоже на решение ниже номинала. Как только я получу идентификатор изменения, я хочу добавить его в этот Datagridview.

Не проверял, но примерно так:

if (dataGridView1.Rows.Count > 0)
{
    specifier = "###,###.00";

    double tier1Minus = 0;
    double tier2Minus = 0;

    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
    {
        tier1Minus += Convert.ToDouble(dataGridView1.Rows[i].Cells["Price"].Value);

        tier2Minus += Convert.ToDouble(dataGridView1.Rows[i+1].Cells["Price"].Value);
    }

    // then add to dataGridView1
}

person JAS    schedule 09.07.2012    source источник


Ответы (1)


Почему бы просто не сделать что-то похожее на (непроверенное):

for(int i = 0; i < dataGridView1.Rows.Count - 1; i++)
    dataGridView1.Rows[i+1].Cells["NetChange"].Value =
        Convert.ToDouble(dataGridView1.Rows[i+1].Cells["Price"].Value) - 
        Convert.ToDouble(dataGridView1.Rows[i].Cells["Price"].Value);

Или, что еще лучше, рассчитайте его при первом импорте данных из файла и вставке строк.

person lc.    schedule 09.07.2012
comment
ах! Я не думал о том, чтобы ссылаться на это таким образом. Я попытаюсь. Спасибо! - person JAS; 09.07.2012
comment
Убедитесь, что сортировка отключена - person Jesse; 09.07.2012