Пользовательское форматирование Double - PullRequest
0 голосов
/ 22 февраля 2010

У меня есть DataGridView, привязанный к DataTable в DataSet.

Я установил все столбцы DataTable на System.Double.

Я хочу, чтобы в последней строке DataGridView отображались "PASS" или "FAIL" в зависимости от некоторых условий значений в этом столбце.

Как мне это сделать?

Идеи:
lastCell = IIF(condition, Double.PositiveInfinity, Double.NegativeInfinity)
Затем примените некоторое условное форматирование (Inf -> PASS, -Inf -> FAIL) к последней строке DataGridView.

Ответы [ 3 ]

3 голосов
/ 22 февраля 2010

Вы могли бы , вероятно, создать и использовать пользовательский NumberFormatInfo, установив PositiveInfinitySymbol и NegativeInfinitySymbol для нужных вам строк.

Но я бы сказал, что было бы лучше сделать что-то подобное в обработчике событий DataGridView.CellFormatting - это сделает его более понятным, что вы делаете и почему, и не будет иметь побочных эффектов, например если другая ячейка имеет бесконечное значение из-за деления на ноль.

Что-то вроде следующего воздушного кода:

void dataGridView1_CellFormatting(object sender, 
    DataGridViewCellFormattingEventArgs e)
{
    if ((e.ColumnIndex == whatever) && (c.RowIndex == whatever))
    {
        // ... comment explaining what you're doing
        if (condition)
        {
            e.Value = "PASS";
        }
        else
        {
           e.Value = "FAIL";
        }
        e.FormattingApplied = true;
    }
}

Извиняюсь за код C #, если вы пометили вопрос VB.NET, но вы найдете образец VB.NET в документации MDSN для события CellFormatting.

0 голосов
/ 22 февраля 2010

Создайте свое условие таким образом, чтобы оно оценивалось в> = 0 для «PASS» или <0 для «FAIL», и применяйте его перед привязкой к сетке (возможно, в самом запросе). Затем используйте эту строку формата в свойстве <code>DefaultCellStyle.Format для столбца в сетке:

{0: "ПРОХОД"; "провал";}

0 голосов
/ 22 февраля 2010

Почему бы не добавить дополнительный столбец в таблицу типа boolean? Логические значения здесь более уместны, так как у вас есть одно из двух состояний, оно либо проходит (true), либо не проходит (fail).

Вы можете добавить дополнительный DataColumn и заполнить значения вручную, или вы можете использовать вычисляемый DataColumn , а затем связать список со списком «PASS» в DataGridView. .

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