0

我有一个基本的饼图,其中包含这样的值

    <cfchartdata item="January" value="503100">
    <cfchartdata item="February" value="720310">
    <cfchartdata item="March" value="688700">

我想将饼图的每一块链接到特定的 URL - 我不需要将任何变量发布到 URL。

我尝试过这样的事情;

<cfchartdata item="January" value="503100" url="januarydata.cfm">

但 URL 不是“cfchartdata”的有效属性

4

1 回答 1

4

url属性属于CFChart标签,而不是CFChartData标签

网址:

如果用户单击数据系列中的项目,则打开 URL;onClick 目标页面。

您可以在 URL 字符串中指定变量;ColdFusion 传递变量的当前值。

  • $VALUE$:所选行的值。如果没有,则该值为空字符串。

  • $ITEMLABEL$:所选项目的标签。如果没有,则该值为空字符串。

  • $SERIESLABEL$:所选系列的标签。

  • 如果没有,则该值为空字符串,例如:“somepage.cfm?item=$ITEMLABEL$&series=$SERIESLABEL$&value=$VALUE$

  • “javascript:...”:执行客户端脚本。

如果要进行动态搜索,可以将上述动态值与静态值和其他 CF 值混合使用。例如:

<cfchart url="someSearchPage.cfm?param1=Static Text&param2=#form.ColdFusionFormVariable#&param3=$ITEMLABEL$" ...>

在此示例中,$ITEMLABEL$ 会自动转换为标签。

免责声明


在回答您的实际问题之前,我应该指出,这不是一个好的做法,并且违背了动态网站的全部目的。您应该考虑一个接受参数并根据该参数从数据库中提取数据的页面。例如monthlyData.cfm?month=january


最简单的方法是将项目标签放在文件名中,正如您在评论中确认的那样。

<cfchart url = "$itemLabel$data.cfm" ...>

如果您需要在发送用户之前进行更多测试,您可以将他们发送到单个 ColdFusion 页面并使用CFSWITCH/CFCASE或 good old CFIF/CFELSE如果没有那么多组合。

-或者-

您可以使用 javaScript: 选项并根据单击的系列运行使用 window.location 的函数。

javaScript:goto($itemSeries$,$seriesLabel$)

js 函数可能如下所示:

function goto(item,label){
  if(item == "..." && label== "..."){
   document.location = "..."; 
  }else{
   etc...;
  }
}
于 2013-02-04T16:26:01.873 回答