【问题标题】:Microsoft ReportViewer: Customize Y-Axis labels to match a specific formatMicrosoft ReportViewer:自定义 Y 轴标签以匹配特定格式
【发布时间】:2017-02-07 18:05:44
【问题描述】:

我想自定义使用 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

但是,正如预期的那样,它没有工作。

谷歌搜索也没有太大帮助,似乎这种自定义是不可能的。还是这样?

非常感谢!

【问题讨论】:

    标签: c# visual-studio customization reportviewer yaxis


    【解决方案1】:

    我使用表达式窗口和更改图表的数据源内容解决了这个问题。

    在填充数据源的方法中,我添加了将大数转换为小数的逻辑:

    reportModel.MillionsSymbol = "";
    if (reportModel.TotalValue > 1000000)
    {
          reportModel.TotalValue /= 1000000;
          reportModel.MillionsSymbol = "M ";
    }
    

    我还将新的MillionsSymbol 字段添加到我的数据源中,并根据 TotalValue 更改其内容。

    然后,我可以在对话框 Vertical Axis Properties -> Number -> Category[custom] 中使用这个新字段

    ="0.00" & Fields!MillionsSymbol.Value
    

    这里的技巧是我编写了一个表达式,它返回一个字符串,其中包含格式化轴号标签的函数所需的字符掩码。在这个字符串中我可以放任何东西,只要它包含掩码 (0.00, #.##,...)。

    此方法允许我将变量连接到将显示为图表垂直轴每个刻度的标签的值。它不允许我处理那个值,因为我没有找到任何方法来访问它。这就是我更改数据源中的值的原因。但是,通过这种方式,我正在更改图形点的值,然后随之改变垂直轴刻度的值。

    最终结果:

    *为清晰起见已编辑图像

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多