Cfgrid单元格包含超链接?

时间:2011-07-14 19:33:39

标签: coldfusion cfgrid

使用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>

2 个答案:

答案 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会调用它。

注意:我没有测试代码只考虑作为测试代码并根据您的需要进行修改。