Как сделать простую математику в datagridview - PullRequest
0 голосов
/ 17 апреля 2010

У меня есть датагридвью с 9 столбцами.Я просто пытаюсь взять значение в столбце 5 и вычесть его из столбца 6, а затем отобразить результат в столбце 9. Это кажется достаточно простым, я знаю, что это делается в Excel все время.Но я просто не могу понять это.Нужно ли создавать новый класс с методом расчета столбцов?Или в классе datagridview уже есть что-то, что может с этим справиться?

Ответы [ 3 ]

1 голос
/ 17 апреля 2010
public void dataGridView_Cellformatting(object sender, DataGridViewCellFormattingEventArgs args)
{
    if(args.ColumnIndex == 9) //Might be 8, I don't remember if columns are 0-based or 1-based
    {
        DataGridViewRow row = dataGridView.Rows[e.RowIndex];
        args.Value = (int)row.Cells[6].Value - (int)row.Cells[5].Value;
    }
}

Ссылки: Событие CellFormatting , DataGridViewcellFormattingEventArgs

1 голос
/ 28 мая 2010

Свяжите свой DataGridView с DataTable и присвойте столбцу соответствующее выражение. Попробуйте экстраполировать этот пример:

        DataTable table = new DataTable();
        table.Columns.Add("Column1", typeof(int));
        table.Columns.Add("Column2", typeof(int));
        table.Columns.Add("Column3", typeof(int), "Column1+Column2");
        dataGridView1.DataSource = table;

где 'dataGridView1' - это типичный элемент управления DataGridView.

1 голос
/ 17 апреля 2010

В приведенном ниже примере кода показано, как можно извлечь значения в заданной позиции (столбец и строка, индексированные 0), а затем попытаться преобразовать эти значения в числа. Затем вы можете сохранить вычисление обратно в другую ячейку в DataGridView.

object value1 = dataGridView1[4, 0].Value;
object value2 = dataGridView1[5, 0].Value;

int val1, val2;
if (int.TryParse(value1.ToString(), out val1) && int.TryParse(value2.ToString(), out val2))
{
    dataGridView1[8, 0].Value = val1 - val2;
}
else
{
    MessageBox.Show("cannot subtract, invalid inputs.");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...