我需要根据里面的值更改xrTableCell
的背景颜色。
比如说,如果值为"已批准",则单元格将为绿色背景,红色表示"已拒登"黄色表示"待处理"。
在Access数据库或SQL报告(SSRS)中,我们可以在=IIF(...)
属性中输入=someFunction()
或BackColor
。但是在XtraReport这里,它并不允许我。
至于格式规则表,我们是否可以在[this] == 'Approved'
内写出类似Condition
的内容?
答案 0 :(得分:1)
重点是以编程方式添加格式规则。
就我而言,有10个部分,每个部分的状态值为"已批准" "待定" "拒登" "未开始"。
如果可以在样式设置中使用IIF
语句,我愿意手动完成。但是在DevExpress XtraReport中,没有办法做到这一点。如果规则只能写为[条件:已批准,则样式:该单元格中的绿色背景],则每个部分将添加四个规则,这使得总共有40个规则!没有人愿意手工做。
好的,这是我的解决方案。
转到报告的代码隐藏,在InitializeComponent();
之后我们可以添加代码来操作报告。这是我的方法AddColorCodingFormattingRules(sections, statusColors);
private void AddColorCodingFormattingRules(IEnumerable sections, Dictionary<string, Color> statusColors)
{
foreach (var s in sections)
{
var cellName = string.Format("xrTableCell{0}", s);
var cell = FindControl(cellName, false) as XRTableCell;
if (cell == null) continue;
foreach (var pair in statusColors)
{
var rule = new FormattingRule
{
Condition = string.Format("[{1}] == \'{0}\'", pair.Key, s),
Name = string.Format("_formatStatus{1}{0}", pair.Key, s)
};
rule.Formatting.BackColor = pair.Value;
FormattingRuleSheet.Add(rule);
cell.FormattingRules.Add(rule);
}
}
}
希望解决方案可以在将来帮助有需要的人。希望XtraReport可以在未来的版本中进行改进,这样我们就不需要具备这种创造力。
答案 1 :(得分:0)
您可以转到属性网格并选择格式规则,在报表设计器中添加格式规则;要添加条件,您需要选择一个字段然后创建条件,例如,如果值出现在名为Status的列中,则需要创建三个格式规则(每种颜色一个)并使条件如下: / p>
[Status] =='Aprroved'
然后,选择表格的单元格并再次打开Fomratting Rules Editor并在“应用规则”下“移动”您选择的格式规则,以便格式化规则对您想要的控件生效。