DataGridView Сравнение результатов - PullRequest
0 голосов
/ 30 августа 2011

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

Например. 1400 + 10

в выборке у пользователя 1400 баллов, у него на 10 баллов больше, чем на прошлой неделе.

Кто-нибудь пробовал это раньше?

Спасибо

1 Ответ

1 голос
/ 30 августа 2011

Используйте событие CellFormatting вашего DataGridView, чтобы установить BackColor и настраиваемый текст, который вы хотите отобразить.

Вы будете выполнять форматирование, когда событие запускается для ячейки встолбец, который отображает счет на этой неделе.Попытайтесь преобразовать это значение и значение из оценки за последнюю неделю (в другом столбце в той же строке) в int s, а затем сравните.Если разница не равна нулю, используйте свойства CellStyle и Value события, чтобы настроить внешний вид ячейки.

Примерно так:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
    if (e.ColumnIndex == 1) {
        string lastScoreString = dataGridView1.Rows[e.RowIndex].Cells[0].Value as string;
        int lastScore;
        if (int.TryParse(lastScoreString, out lastScore)) {
            string thisScoreString = dataGridView1.Rows[e.RowIndex].Cells[1].Value as string;
            int thisScore;
            if (int.TryParse(thisScoreString, out thisScore)) {
                var scoreDifference = thisScore - lastScore;
                var formattedScoreText = string.Format("{0}   {1}", thisScore, scoreDifference.ToString("+#;-#;0"));
                if (scoreDifference > 0) {
                    e.CellStyle.BackColor = Color.Green;
                    e.CellStyle.ForeColor = Color.White;  // <-- Me expressing my artistic self.
                    e.Value = formattedScoreText;
                } else if (scoreDifference < 0) {
                    e.CellStyle.BackColor = Color.Red;
                    e.Value = formattedScoreText;
                }
            }
        } else {
            //TODO Can't parse this week score.
        }
    } else {
        //TODO Can't parse last week score.
    }
}

[Код предполагает, что отображается оценка за последнюю неделюв первом столбце (позиция индекса 0), а оценка на этой неделе во втором столбце]

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