1

我已经创建了一个 ASPx 饼图,并且正在努力获得正确的颜色。需要注意的重要一点是,我根本无法控制后端代码(第 3 方),因此仅限于 XML 修改(Microsoft Dynamics CRM)。

问题是我想使用颜色来指示返回的记录的某种状态(例如,一本书在图书馆中过期的天数)。我想要这样的情况:

迟到 0-5 天(= 代码 0)----> 绿色

延迟 5-10 天(= 代码 1)----> 黄色

迟到 10-15 天(= 代码 2)----> 橙色

>15 days late (= code 3) ----> red

我从服务器收到的数据例如:

代码(迟到的天数) 计数(书籍) 0 4 2 5 3 14

当我使用PaletteCustomColors属性并指定如下颜色时,此方法有效:

<Chart Palette="None" PaletteCustomColors="149,189,66; 255,255,0; 255,136,35; 197,56,52; 117,82,160; 55,118,193; 168,203,104; 142,116,178; 93,186,215; 255,155,83">
  <Series>
    <Series ShadowOffset="0" IsValueShownAsLabel="True" Font="{0}, 9.5px" LabelForeColor="59, 59, 59" CustomProperties="PieLabelStyle=Inside, PieDrawingStyle=Default" ChartType="pie">
      <SmartLabelStyle Enabled="True" />
    </Series>
  </Series>
  <ChartAreas>
    <ChartArea>
      <Area3DStyle Enable3D="true" />
    </ChartArea>
  </ChartAreas>
  <Legends>
    <Legend Alignment="Center" LegendStyle="Table" Docking="right" IsEquallySpacedItems="True" Font="{0}, 11px" ShadowColor="0, 0, 0, 0" ForeColor="59, 59, 59" />
  </Legends>
  <Titles>
    <Title Alignment="TopLeft" DockingOffset="-3" Font="{0}, 13px" ForeColor="0, 0, 0"></Title>
  </Titles>
</Chart>

但是,当某个代码不存在时,这不起作用。在这种情况下,颜色将是:

代码 0 -> 绿色,代码 2 -> 黄色,代码 3 -> 有机

因此,由于没有返回代码 1 结果(因为此代码的计数为 0,因此应用程序没有返回结果),代码 2 采用第一个剩余的颜色,代码 3 采用之后的颜色,...这不是我的想要,我希望将颜色绑定到它们的 Code 属性。

我已经尝试为此使用 DataPoints(请参见下面的代码),但无济于事......有没有人有任何体面的解决方案?

    <Chart>
  <Series>
    <Series ShadowOffset="0" IsValueShownAsLabel="True" Font="{0}, 9.5px" LabelForeColor="59, 59, 59" CustomProperties="PieLabelStyle=Inside, PieDrawingStyle=Default" ChartType="pie">
      <SmartLabelStyle Enabled="True" />
      <Points>
        <DataPoint XValue="0" Color="Green" />
        <DataPoint XValue="1" Color="Yellow" />
        <DataPoint XValue="2" Color="Orange" />
        <DataPoint XValue="3" Color="Red" />
        <DataPoint XValue="4" Color="Purple" />
    </Points>
    </Series>
  </Series>
  <ChartAreas>
    <ChartArea>
      <Area3DStyle Enable3D="true" />
    </ChartArea>
  </ChartAreas>
  <Legends>
    <Legend Alignment="Center" LegendStyle="Table" Docking="right" IsEquallySpacedItems="True" Font="{0}, 11px" ShadowColor="0, 0, 0, 0" ForeColor="59, 59, 59" />
  </Legends>
  <Titles>
    <Title Alignment="TopLeft" DockingOffset="-3" Font="{0}, 13px" ForeColor="0, 0, 0"></Title>
  </Titles>
</Chart>

谢谢!

4

2 回答 2

0

可以在中间创建一个代理服务吗?

取而代之的是:代码(迟到的天数)计数(书籍)0 4 2 5 3 14

您的服务将注入零值项目:代码(迟到的天数)计数(书籍)0 4 1 0 2 5 3 14

于 2012-06-28T23:11:06.913 回答
0

您必须在视图中包含一些虚拟记录,然后在聚合数据时更改图表 xml 以不包含它们。您可以在此处查看该方法的完整示例http://crmchartguy.wordpress.com/2013/02/24/specify-exact-colors-for-each-priority-in-the-microsoft-dynamics-crm-2011-案例图/

于 2013-06-11T22:23:05.507 回答