Member 13870676 Ответов: 1

Как подсчитать цветную ячейку в datagridview?


Я работаю над приложением WinForm на основе доступа. У меня есть цветная ячейка(DateColumn) в моем DataGridView. Я пытаюсь подсчитать эти ячейки и отразить цветной номер ячейки в тексте этикетки. Мои коды выглядят следующим образом:

private void metroGrid1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {

        if (this.metroGrid1.Columns[e.ColumnIndex].DataPropertyName == "Date 1")
            try
            {
                var EMIDate1 = Convert.ToDateTime(metroGrid1.Rows[e.RowIndex].Cells["date1DataGridViewTextBoxColumn"].Value);


                if (EMIDate1 <= DateTime.Today)
                {
                    e.CellStyle.BackColor = Color.DarkRed;
                    e.CellStyle.ForeColor = Color.White;
                    int countDarkRed = 0;
                    for (int i = 0; i < metroGrid1.RowCount; i++)
                    {
                        if (e.CellStyle.BackColor == Color.DarkRed)
                            ++countDarkRed;
                        labelEMI.Text = "Total EMI due as on today:" + countDarkRed;
                    }
                }
            }
            catch
            {
            }
}


Что я уже пробовал:

Я попробовал приведенный выше код, но эти коды подсчитывают строки DataGridView всякий раз, когда добавляется новая строка.Он увеличивает номер на 1.

Gerry Schmitz

Какую "логику" вы используете для раскрашивания в первую очередь? В противном случае, как вы узнаете, какие цвета искать?

Giorgio Orizio

Логика, которую он использует, основана на дате. Если дата прошла сегодня, то она становится темной. Согласно опубликованному кодексу.

Giorgio Orizio

Лично я бы основал этот расчет на EMIDate1, а не на цвете.

1 Ответов

Рейтинг:
1

Maciej Los

Попробовать это:

labelEMI.Text = string.Format("Total EMI due as on today: {0}", metroGrid1.Rows.Cast<DataGridViewRow>()
    .Count(r=>r.Cells["Date 1"].Style.BackColor == Color.DarkRed));