0

我正在制作一个非常简单的投票应用程序。用户用值“是”或“否”给某个数字发短信,结果通过 AJAX 在投影仪上实时显示。有五个不同的项目可供投票(全部是或否)。

现在我有一个 SQL 视图,它返回[poll_name, vote_value, value_count]vote_value 是“是”还是“否”的地方。

使用 RadHtmlChart,我正在尝试显示一个堆叠的 BarChart,每个条形图都有一个条形图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,它们都是相同的颜色(显然),并且它们没有堆叠。理想情况下,我可以告诉它BarSeries为 (ie, group by) 的每个值创建一个新值vote_value

我应该如何处理数据或更改我的标记来解决这个问题?将来我希望允许任意数量的响应,所以我不愿意将我的查询更改为仅具有“yes_count”和“no_count”列,但与此同时我可能不得不这样做。

4

1 回答 1

0

要堆叠系列,您至少需要两个:http ://demos.telerik.com/aspnet-ajax/htmlchart/examples/functionality/stackedseries/defaultcs.aspx

应该对其值进行“是”投票(即,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 查询本身中生成一个动态字段,如果这是您所拥有的,则从总票数中减去“是”票。

于 2014-10-21T14:37:57.863 回答