Telerik RadHtmlChart组按列值列出系列

时间:2014-10-15 00:43:33

标签: c# asp.net telerik radhtmlchart

我正在制作一个非常简单的投票应用。用户使用值“是”或“否”发送一定数量的文本,结果将通过投影仪上的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'列,但我可能不得不在此期间。

1 个答案:

答案 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查询本身中生成一个动态字段,如果那是你所拥有的,则从总票数中减去是的投票。