2011-07-14 119 views
1

使用CF9并有一个非常基本的html cfgrid,它返回来自SQL查询的结果。Cfgrid单元格包含超链接?

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

一种方法是你可以生成和列追加到使用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中。

希望能帮助你找到正确的道路......,上次使用它时,我的工作很好!

+0

Jas,谢谢您的反馈。我不完全确定我在哪里看到逻辑部分。我需要这个链接才能启用只有ID类型=(说..)“网络”。我上面的列被命名为ID和IDType。我是否需要指定一个名为Link的cfgrid列?而且,超链接会根据ID类型而改变的情况如何?例如,如果ID类型是“web”,并且ID是1234,则单元ID中的值将指向www.mysite.com/1234.html。但是如果身份证类型是“汽车”,身份证是“福特”,则会创建不同的链接(www.cars.com/ford.html)。 – stuttsdc

+0

@stutt - 在Jas提供的' Antony

+0

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; 
    } 

} 
}; 

和关于ajaxonload

<cfset ajaxOnLoad("gridRender")> 

ajaxOnLoad会自动调用gridRender JS上加载页面,并设置网格功能通过gridRender功能,使ColdFusion文件调用gridRender功能。每次你的列单元格要呈现时,renderFun都会调用它。

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

+0

这看起来也是一个很好的解决方案,但我使用上面的其他解决方案。尽管如此,我可能会回到这一个。 – stuttsdc

+0

这是你的选择,但不建议写入cfc函数的查询,否则它不能用于其他目的。 –