0

私はかなり単純な投票アプリを作っています。ユーザーが「はい」または「いいえ」の値を含む特定の数字をテキストで送信すると、結果が AJAX 経由でプロジェクターにライブで表示されます。投票する項目は 5 つあります (すべて「はい」または「いいえ」)。

[poll_name, vote_value, value_count]現在、vote_value が「はい」または「いいえ」のいずれかを返す SQL ビューがあります。

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>

残念ながら、必要な数のバーが 2 倍になってしまいpoll_nameます。それぞれに「はい」と「いいえ」があり、(明らかに) すべて同じ色で、積み上げられていません。BarSeries理想的には、(つまり、group by)の各値に対して新しいものを作成するように指示できますvote_value

データをマッサージするか、マークアップを変更してこれを修正するにはどうすればよいですか? 将来的には、任意の数の応答を許可したいので、クエリを単に 'yes_count' 列と 'no_count' 列を持つように変更するのは嫌ですが、当面は変更する必要があるかもしれません。

4

1 に答える 1

0

シリーズをスタックするには、少なくとも 2 つ必要です: 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 クエリ自体に動的フィールドを生成して、投票総数から賛成票を差し引くことができます。

于 2014-10-21T14:37:57.863 に答える