2011-07-14 117 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函數的查詢,否則它不能用於其他目的。 –