我正在制作一个非常简单的投票应用。用户使用值“是”或“否”发送一定数量的文本,结果将通过投影仪上的AJAX实时显示。投票有五个不同的项目(所有是或否)。
现在我有一个返回[poll_name, vote_value, value_count]
的SQL视图,其中vote_value为'yes'或'no'。
使用RadHtmlChart,我正在尝试显示一个堆叠的BarChart,其中每个poll_name
都有一个条形图,一个没有投票的红色条形图和一个用于投票的蓝色条形图。我尝试更改BarChart example中的代码并将其与SqlDataSource example合并:
<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
的'是'和'不',它们都是相同的颜色(显然),而且它们不是堆叠。理想情况下,我可以告诉它为每个值(即分组依据)BarSeries
创建一个新的vote_value
。
我应该如何按摩数据或更改标记来解决此问题?在将来,我想允许任意数量的响应,所以我不愿意将我的查询更改为只有'yes_count'和'no_count'列,但我可能不得不在此期间。
答案 0 :(得分:0)
要叠加系列,您至少需要两个:http://demos.telerik.com/aspnet-ajax/htmlchart/examples/functionality/stackedseries/defaultcs.aspx
对于其值,应该具有YES投票(即,DataFieldY属性中提供的字段应该具有x轴上每个项目的该数字)。另一个应为NO投票提供相同的内容。
因此,你应该有类似的东西:
<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查询本身中生成一个动态字段,如果那是你所拥有的,则从总票数中减去是的投票。