Telerik RadHtmlChart按列值分组系列
本文关键字:系列 RadHtmlChart Telerik | 更新日期: 2023-09-27 18:26:28
我正在制作一个非常简单的轮询应用程序。用户用"是"或"否"的值输入某个数字,结果会通过AJAX实时显示在投影仪上。有五个不同的项目需要投票(全部是或否)。
现在,我有一个返回[poll_name, vote_value, value_count]
的SQL视图,其中vote_value为"yes"或"no"。
使用RadHtmlChart,我试图显示一个堆叠的条形图,每个poll_name
都有一个条形图,红色条形图表示反对票,蓝色条形图表示赞成票。我试图更改BarChart示例中的代码,并将其与SqlDataSource示例合并:
<asp:SqlDataSource ID="sqlResults" runat="server" ConnectionString="<%$ ConnectionStrings:MyDB %>"
SelectCommand="select poll_name, vote_value, value_count from vw_sms_pollResults order by poll_id" />
<tel:RadScriptManager runat="server" ID="rsmScriptManager" />
<tel:RadAjaxPanel runat="server" ID="rapPanel" LoadingPanelID="ralpLoadingPanel" EnableAJAX="true">
<tel:RadHtmlChart runat="server" ID="rhcResults" Width="800" Height="500" Transitions="true" DataSourceID="sqlResults">
...
<PlotArea>
<Appearance>
<FillStyle BackgroundColor="White" />
</Appearance>
<XAxis DataLabelsField="poll_name">
<MajorGridLines Visible="false" />
<MinorGridLines Visible="false" />
</XAxis>
<YAxis AxisCrossingValue="0">
<MajorGridLines Visible="false" />
<MinorGridLines Visible="false" />
</YAxis>
<Series>
<tel:BarSeries Stacked="true" DataFieldY="value_count">
<Appearance FillStyle-BackgroundColor="Red" />
</tel:BarSeries>
</Series>
</PlotArea>
</tel:RadHtmlChart>
</tel:RadAjaxPanel>
不幸的是,我最终得到的条数是我想要的两倍:每个poll_name
都有一个"是"和一个"否",它们都是相同的颜色(显然),而且没有堆叠。理想情况下,我可以告诉它为vote_value
的每个值创建一个新的BarSeries
。
我应该如何处理数据或更改标记来解决此问题?将来我希望允许任意数量的响应,所以我不愿意将查询更改为只包含"yes_count"answers"no_count"列,但在此期间我可能不得不这样做。
要堆叠系列,至少需要两个:http://demos.telerik.com/aspnet-ajax/htmlchart/examples/functionality/stackedseries/defaultcs.aspx
应该对其值进行YES投票(即,DataFieldY属性中提供的字段对于x轴上的每个项目都应该具有该数字)。另一方应提供相同的反对票。
因此,你应该有这样的东西:
<Series>
<tel:BarSeries Stacked="true" DataFieldY="value_count_Yes">
<Appearance FillStyle-BackgroundColor="Red" />
</tel:BarSeries>
<tel:BarSeries Stacked="true" DataFieldY="value_count_No">
<Appearance FillStyle-BackgroundColor="Blue" />
</tel:BarSeries>
</Series>
我不确定您的数据是如何构建的,所以我不确定如何获得这些数据。也许您可以在SQL查询本身中生成一个动态字段,从总票数中减去赞成票(如果您有)。