[英]Microsoft ReportViewer: Customize Y-Axis labels to match a specific format
我想自定义使用Microsoft ReportViewer绘制的图形的Y轴标签。 我想要的是具有如下逻辑:
If (value>1000000)
return value/1000000 & "M"
else
return value
例如,如果标签的值为12000000,则标签的值为12M,否则,如果标签的值为1200,则该值将保持为1200。
我试图自定义数字格式以通过以下方式获得这种行为:
= iif(value>1000000,value/1000000 'M',value)
(为了帮助将我的问题具体化,我在谈论此窗口=> https://dotnetblurb.files.wordpress.com/2012/05/3.jpg )
但是,正如预期的那样,它没有用。
谷歌搜索没有太大帮助,似乎这种定制是不可能的。 还是?
非常感谢你!
我同时使用表达式窗口和更改图形的数据源内容来解决此问题。
在填充数据源的方法中,我添加了将大数字转换为小数字的逻辑:
reportModel.MillionsSymbol = "";
if (reportModel.TotalValue > 1000000)
{
reportModel.TotalValue /= 1000000;
reportModel.MillionsSymbol = "M ";
}
我还向我的数据源添加了新的MillionsSymbol
字段,并根据TotalValue更改了其内容。
然后,我可以在“垂直轴属性->数字->类别[自定义]”对话框中使用此新字段
="0.00" & Fields!MillionsSymbol.Value
这里的窍门是,我编写了一个表达式,该表达式返回一个字符串,其中包含格式化轴号标签的函数所需的字符掩码。 只要包含掩码(0.00,#。##,...),我都可以在此字符串中放入任何内容。
这种方法使我可以将变量连接到该值,该值将作为图的垂直轴的每个刻度显示为标签。 它不允许我使用该值,因为我找不到任何途径来使用它。 这就是为什么我更改了数据源中的值的原因。 但是,通过这种方式,我更改了图形点的值,然后更改了垂直轴刻度线的值。
最后结果:
*为清晰起见编辑的图像
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.