Динамическое изменение цвета ячейки в DataGridView - PullRequest
0 голосов
/ 10 марта 2019

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

private void EMIDGVAdm_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (this.EMIDGVAdm.Columns[e.ColumnIndex].DataPropertyName == "Date_1")
        {
            var EMIDate = Convert.ToDateTime(EMIDGVAdm.Rows[e.RowIndex].Cells["Date_1"].Value);
            if (EMIDate <= DateTime.Now)
            {
                e.CellStyle.BackColor = Color.Red;
                //e.CellStyle.ForeColor = Color.Red;
            }
        }
    }

1 Ответ

1 голос
/ 10 марта 2019

Используйте Today, если временная часть не нужна. A try catch обрабатывает возможный ноль в поле даты. Необходимо использовать имя коллекции столбцов gridview в строке var EMIDate, которая, вероятно, отличается от DataPropertyName. Так что для gridview в вашей рабочей процедуре, они, вероятно, одинаковы.

Проанализирован проект ОП. Кажется, что код не будет читать столбцы вне поля зрения, поэтому пришлось расширить DataGridView и панель для отображения столбца Date_1 без прокрутки. Кроме того, DataPropertyName не имеет подчеркивания. Скорректированный дизайн и код работ:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (this.dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "Date 1")
        try
        {
            var EMIDate = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["date1DataGridViewTextBoxColumn"].Value);
            if (EMIDate <= DateTime.Today)
            {
                e.CellStyle.BackColor = Color.Red;
            }
        }
        catch
        {
        }
}

Обнаружено текстовое поле с неправильным именем. Возможно, textBox6 должен быть txtEMI6 для согласования с именами других элементов управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...