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"列,但在此期间我可能不得不这样做。

Telerik RadHtmlChart按列值分组系列

要堆叠系列,至少需要两个: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查询本身中生成一个动态字段,从总票数中减去赞成票(如果您有)。