使用CF9并有一个非常基本的html cfgrid,它返回SQL查询的结果。
网格中只有两列:“ID”和“IDType”。
我正在寻找是否有办法实现某些逻辑,这样当我确定IDType出现时,ID字段中的值就成了超链接中的键值。
示例:IF IDType =“web”,ID为“1234”,ID字段内的值将显示为http:/www.website.com/1234.html(或者......更好:只是显示为“1234”但启用了超链接以转到上述站点。)
如果IDType不是(例如)“web”,则该值仅显示为常规单元格值(文本)。
<cfgrid
name="idGrid"
title="Related IDs"
query="get_IDs"
format="html"
>
<cfgridcolumn name="ID" header="ID" />
<cfgridcolumn name="IDType" header="ID Source" />
</cfgrid>
答案 0 :(得分:0)
执行此操作的一种方法是,您可以使用queryColumnAdd()函数为查询生成并附加列,将链接放在单元格中,然后将修改后的查询推送到cfgrid。
链接将呈现,您可以点击它!
如果我可以伪代码..首先写你的正常查询
<cfquery name = "myQuery" datasource = "myCFDatasource">
SELECT ID, field1, field2, field3
FROM aTable
</cfquery>
接下来,我们将链接列添加到其中..
<cfset queryAddColumn(myQuery, "Link", ArrayNew(1)) />
<cfloop query="myQuery">
<cfset querySetCell(myQuery, "Link", "http://www.mysite.com/some/index.cfm?ID=#myQuery.ID#"), myQuery.currentRow) />
</cfloop>
然后,您可以将修改后的查询myQuery提交到您的cfgrid,就像上面那样。
希望这有助于让你走上正确的道路..上次我使用它时,对我来说效果很好!
答案 1 :(得分:0)
你可以使用javascript onRender功能。
var gridRender = function()
{
var grid = ColdFusion.Grid.getGridObject('gridname');
var cm = grid.getColumnModel();
cm.setRenderer(0,renderFun); //first arguments stands for column number
}
var renderFun = function(value, cellMeta, record, row, col, data)
{
if(value != null)
{
switch(col)
{
case 0:
return "<a href='yoururl?id=" & value & "'>" & value & "</a>";
default:
return value;
}
}
};
在coldfusion页面上调用ajaxonload上的gridRender函数
<cfset ajaxOnLoad("gridRender")>
ajaxOnLoad将自动调用加载页面上的gridRender js函数并设置网格以通过gridRender函数进行渲染。每次你的列单元格都要渲染时,renderFun会调用它。
注意:我没有测试代码只考虑作为测试代码并根据您的需要进行修改。