Cross-tab highlighting
Добавлено: 29 июл 2010, 07:48
Ещё одна важная вещь.
Для примера можете использовать Ваш отчёт из демки под названием Cross-Tab with Highlight Condition.
Заходим в Design, выделям CrossTab1_Sum1 и выставляем свойство Summary в None (было Sum). None мне нужно для высчитывания процентов вручную в событии ProcessCellEvent, т.е. при этом суммировать мне не нужно, поэтому я и убираю Sum. Но когда я ставлю в Conditions (в Вашем примере, Expression: value 0, то зелёный цвет, а value < 0 - красный цвет, то получаю Exception следующего содержания:
error CS0019: Operator '<' cannot be applied to operands of type 'object' and 'int'
При этом в коде это выглядит так:
А когда ставлю свойство Summary в Sum, то код выглядит как и должен:
Любые попытки приведения к нужному типу (вроде или ) заканчиваются ошибкой: CrossTab1_Sum1 Specified cast is not valid.
Вопрос. Как быть, если необходимо использовать событие ProcessCellEvent, при котором свойство Summary должно быть непременно None, а также использовать Conditions для раскраски необходимых колонок по условию.
Для примера можете использовать Ваш отчёт из демки под названием Cross-Tab with Highlight Condition.
Заходим в Design, выделям CrossTab1_Sum1 и выставляем свойство Summary в None (было Sum). None мне нужно для высчитывания процентов вручную в событии ProcessCellEvent, т.е. при этом суммировать мне не нужно, поэтому я и убираю Sum. Но когда я ставлю в Conditions (в Вашем примере, Expression: value 0, то зелёный цвет, а value < 0 - красный цвет, то получаю Exception следующего содержания:
error CS0019: Operator '<' cannot be applied to operands of type 'object' and 'int'
При этом в коде это выглядит так:
Код: Выделить всё
object value = 0;
if (e.Value is object)
{
value = ((object)(e.Value));
}
string tag = ((StiComponent)sender).TagValue as string;
string tooltip = ((StiComponent)sender).ToolTipValue as string;
string hyperlink = ((StiComponent)sender).HyperlinkValue as string;
if (value < 20)
...
Код: Выделить всё
decimal value = 0;
if (e.Value is decimal)
{
value = ((decimal)(e.Value));
}
string tag = ((StiComponent)sender).TagValue as string;
string tooltip = ((StiComponent)sender).ToolTipValue as string;
string hyperlink = ((StiComponent)sender).HyperlinkValue as string;
if (value < 20)
...
Любые попытки приведения к нужному типу (вроде
Код: Выделить всё
decimal(value) < 20
Код: Выделить всё
(int)value < 20
Вопрос. Как быть, если необходимо использовать событие ProcessCellEvent, при котором свойство Summary должно быть непременно None, а также использовать Conditions для раскраски необходимых колонок по условию.