0

我知道如何将 Datatable 绑定到 Repeaters 和 Datalist 并使用

<%# Eval("FieldName")%>

我知道如何使用 fltr2 创建演示饼图

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"></script>
    <script type="text/javascript" src="https://raw.github.com/ekoontz/flotr/master/flotr/flotr-0.2.0-alpha.js"></script>

</head>
<body>
    <div id="container" style="width:350px;height:300px;" ></div>
    <script type='text/javascript'>
        (function basic_pie(container) {
              var
                d1 = [[0, 200]],
                d2 = [[0, 60]],
                d3 = [[0, 6]],
                d4 = [[0, 80]],
                d5 = [[0, 20]],
                graph;
                graph = Flotr.draw('container', 
                    [{ data : d1, label : 'Attending'},{ data : d2, label : 'Not Attending' },{ data : d3, label : 'No Attempts' }, { data : d4, label : 'Unreachable' }, { data : d5, label : 'Undecided' }], 
                    {
                        shadowSize: 4,
                        colors: ['#BAC463', '#C5B59C', '#B88898', '#FFAC84', '#7BBDAF'],
                        grid : { verticalLines : false, horizontalLines : false, outlineWidth: 0 },
                        xaxis : { showLabels : false },
                        yaxis : { showLabels : false },
                        pie : { show : true, explode : 4, labelFormatter: function(total, value) { return value;} },
                        mouse : { track : true },
                        legend : { show: false, position : 'se', backgroundColor : '#D2E8FF'}
                    }
                );
            })(document.getElementById("editor-render-0"));
    </script>
</body>

这是我的主要问题

如何动态更新我的饼图数据,以便在绑定数据表时显示其正确的内容。

基于我的演示饼图。我需要显示总共5个数据,即

参加、未参加、未尝试、无法访问、未决定

我可以有这 5 个总数的多条记录,并且它们中的任何一个都可以有一个 0 值,但不能同时为所有这些记录。

是否可以将特定颜色绑定到特定数据?

就像我希望参加的部分是绿色的,而不是红色的等等......因为我的演示会自动使用默认颜色的序列。例如,当 NotAttending = 0 时,我不应再显示它,但颜色仍应与它们各自的数据保持一致。这意味着不应再使用红色。但是我真的很难解决这个问题,因为 flotr2 缺乏文档和样本。

我希望有人可以帮助我。提前致谢。

4

1 回答 1

0

我已经解决了我的问题,但我使用了谷歌的可视化。我使用了一个 datalist 并将 javascript 放在<ItemTemplate></ItemTemplate>DataList 上的标记内

<script type="text/javascript">
                    google.load("visualization", "1", { packages: ["corechart"] });
                    google.setOnLoadCallback(drawChart);
                    function drawChart() {
                        var data = google.visualization.arrayToDataTable([
                            ['Status', 'Total Guest'],
                            ['Attending', <%# GetGuestCountByStatus(int.Parse(Eval("EventId").ToString()), 1) %>],
                            ['Not Attending', <%# GetGuestCountByStatus(int.Parse(Eval("EventId").ToString()), 2) %>],
                            ['Undecided', <%# GetGuestCountByStatus(int.Parse(Eval("EventId").ToString()), 3) %>],
                            ['Unreachable', <%# GetGuestCountByStatus(int.Parse(Eval("EventId").ToString()), 4) %>],
                            ['Pending', <%# GetGuestCountByStatus(int.Parse(Eval("EventId").ToString()), 5) %>]
                            ]);

                        var options = {
                            title: '',
                            slices: { 0: { color: '#a0d2af' }, 1: { color: '#f1a99b' }, 2: { color: '#dac0c3' }, 3: { color: '#a8d7dd' }, 4: { color: '#fed9a2'} },
                            legend: { position: 'none' },
                            pieSliceText: 'none'
                            };

                        var chart = new google.visualization.PieChart(document.getElementById(<%# "'chart-div-" + Eval("EventId") + "'" %>));
                            chart.draw(data, options);
                            }
                </script>

我必须将事件 ID 添加到每个图表 div。

目前,可视化中的颜色比 flotr2 更好,因为您可以为数据的任何索引分配颜色,而 flotr2 的文档中并不清楚如何做到这一点。如果您在饼图中为数据设置 0 值,它将不会显示,并且分配给该索引的颜色也不会显示。在 flotr2 中,如果您的值为 0,您可以看到饼图中有一条线。我认为这只是边界,但在撰写本文时通过可视化仍然做得更好。

于 2013-05-24T10:23:59.943 回答