Cfgrid单元格包含超链接



使用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将在每次渲染列单元格时调用。

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

相关内容

  • 没有找到相关文章