使用CF9,并有一个相当基本的html cfgrid,从SQL查询返回结果。
网格中只有两列:"ID"one_answers"IDType"。
我想看看是否有一种方法来实现一些逻辑,以便当我某些IDType显示时,ID字段中的值成为超链接中的键值。
示例:如果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>
一种方法是使用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中,就像上面所做的那样。
希望这能帮助你走上正确的道路。我上次用的时候效果很好!
可以使用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将在每次渲染列单元格时调用。
注意:我没有测试代码,只是考虑作为测试代码和修改根据您的需要。