0

请考虑以下代码:

在我的文件标题内跟随标签

<script>

var chart;

var chartData = [{
    ConnectionType: "First",
    NumberPercentage: 1194,
{
    ConnectionType: "Second",
    NumberPercentage: 1882},
{
    ConnectionType: "Third",
    NumberPercentage: 1809},
{
    ConnectionType: "Fourth",
    NumberPercentage: 1322},
{
    ConnectionType: "Fifth",
    NumberPercentage: 1122},
{
    ConnectionType: "Sixth",
    NumberPercentage: 1114},
{
    ConnectionType: "Seventh",
    NumberPercentage: 984}
    ];


AmCharts.ready(function() {
    // PIE CHART
    chart = new AmCharts.AmPieChart();

    // title of the chart
    chart.addTitle("3D Donut Charts", 16);

    chart.dataProvider = chartData;
    chart.titleField = "ConnectionType";
    chart.valueField = "NumberPercentage";
    chart.sequencedAnimation = true;
    chart.startEffect = "elastic";
    chart.innerRadius = "30%";
    chart.startDuration = 2;
    chart.labelRadius = 15;

    // the following two lines makes the chart 3D
    chart.depth3D = 10;
    chart.angle = 15;

    // WRITE                                 
    chart.write("chartdiv");
});

</script>

我的个人资料的正文标签内的以下标签:

<div id="chartdiv" style="width: 100%; height: 362px;"></div>

cfquery我想在我的 ColdFusion 文件中返回以下数据。为了简单起见,我只提到cfquery第一个连接。除名称外,其余 cfqueries 直到第七个都相同。

<cfquery datasource = "XX.XX.X.XX" name="qCFCHART">
SELECT
   Count(*) AS TOTAL_CONNECTION
,  Sum(CASE WHEN 'FIRST'  = EVENTS THEN 100 END) / Count(*) AS FIRST
,  Sum(CASE WHEN 'SECOND' = EVENTS THEN 100 END) / Count(*) AS SECOND
,  Sum(CASE WHEN 'THIRD'  = EVENTS THEN 100 END) / Count(*) AS THIRD
,  Sum(CASE WHEN 'FOURTH' = EVENTS THEN 100 END) / Count(*) AS FOURTH
,  Sum(CASE WHEN 'FIFTH'  = EVENTS THEN 100 END) / Count(*) AS FIFTH
,  Sum(CASE WHEN 'SIXTH'  = EVENTS THEN 100 END) / Count(*) AS SIXTH
,  Sum(CASE WHEN 'SEVENTH'  = EVENTS THEN 100 END) / Count(*) AS SEVENTH
   FROM MyDatabase;
</cfquery> 

考虑上面脚本中的代码:

ConnectionType: "First",
NumberPercentage: 1194,

我想将上述查询中“FIRST”返回的结果显示到我的饼图中,并且写cfdump或任何与 ColdFusion 相关的东西都不起作用。

例如:

ConnectionType: "First",
NumberPercentage: <cfdump var="#qCFCHART.FIRST#>",

以上引发了一个错误,我看到了一个明显的原因,因为我在脚本标签内,我想知道如何继续?有什么建议么?

这是我在遵循一些评论后的尝试:

<cfoutput query="qCFCHART">
    #currentrow#)
    <cfloop index="col" list="#columnlist#">
            #col#=#qCFCHART[col][currentRow]#
    </cfloop>
    <p/>
</cfoutput>


<cfset cols = getMetadata(qCFCHART)>
<cfdump var="#cols#">
4

3 回答 3

2

您将需要循环查询并创建一个类似于图表所期望的数据结构 - 这似乎是一个结构数组。

我不会为您提供执行此操作的代码,因为这是一个相当简单的操作,如果您选择查找它,您可以轻松找到相关信息。

chartData然后,您可以使用 serialzeJSON( data ) 获取数据的 JSON 版本 - 它应该具有与示例代码中相同的结构。

于 2013-08-05T13:53:29.010 回答
0

您需要做的是将服务器端冷融合查询中的值输出到客户端 javascript 中。例如

<cfoutput>
var chartData = [{
    ConnectionType: "First",
    NumberPercentage: #qCFCHART.FIRST#},
{
    ConnectionType: "Second",
    NumberPercentage:  #qCFCHART.Second#},
{
    ConnectionType: "Third",
    NumberPercentage:  #qCFCHART.Third#},
{
    ConnectionType: "Fourth",
    NumberPercentage:  #qCFCHART.Fourth#},
{
    ConnectionType: "Fifth",
    NumberPercentage:  #qCFCHART.Fifth#},
{
    ConnectionType: "Sixth",
    NumberPercentage:  #qCFCHART.Sixth#},
{
    ConnectionType: "Seventh",
    NumberPercentage:  #qCFCHART.Seventh#}
    ];
</cfoutput>

您的 cfdump 方法可能不起作用的主要原因是您在此处遇到语法错误:

<cfdump var="#qCFCHART.FIRST#>"

本来应该

<cfdump var="#qCFCHART.FIRST#">

但我强烈建议不要使用 cfdump;只需正常输出值,就不需要将值“转储”到生产代码中。

于 2013-08-05T13:37:58.250 回答
0

这个问题的简单解决方法是我需要<cfoutput>#serializeJSON(qCFCHART.First)#</cfoutput>在数字百分比字段之后提及它,它工作正常。

于 2013-08-12T17:51:43.233 回答