1

使用 CF9 并有一个非常基本的 html cfgrid,它从 SQL 查询返回结果。

网格中只有两列:“ID”和“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>
4

2 回答 2

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 中。

希望这可以帮助您走上正确的道路..,上次使用它时对我来说效果很好!

于 2011-07-14T19:41:41.067 回答
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 都会调用。

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

于 2011-07-15T06:15:47.340 回答