2011-07-14 5 views
1

CF9を使用し、SQLクエリから結果を返す非常に基本的なhtml cfgridを持っています。Cfgridセルにハイパーリンクが含まれていますか?

"ID"と "IDType"の2つの列があります。

特定のIDTypeが表示されたときにIDフィールドの値がハイパーリンクのキー値になるように、ロジックを実装する方法があるかどうかを調べたいと思います。

例:IF IDType = "web"、IDが "1234"の場合、IDフィールド内の値はhttp:/www.website.com/1234.html(または...より良い:

IDTypeが "web"などでない場合、その値は通常のセル値(テキスト)として表示されます(例: "1234"と表示されますが、上記のサイトに移動するにはハイパーリンクが有効になります)。 )。これを行うには

    <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タイプ=(例えば..) "web"の場合にのみ有効にする必要があります。上の私の列は、IDとIDTypeという名前です。 Linkというcfgridcolumnを指定する必要がありますか? IDの種類によってハイパーリンクが変わるのはどうですか?たとえば、IDタイプが「web」でIDが1234の場合、セルIDの値はwww.mysite.com/1234.htmlを指します。しかしIDのタイプが「車」で、IDが「Ford」の場合、別のリンクが作成されます(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; 
    } 

} 
}; 

とColdFusionページの呼び出しgridRender機能上のajaxonload上

<cfset ajaxOnLoad("gridRender")> 

ajaxOnLoadは自動的にgridRender関数を介してレンダリングするためにページロードされ、セットアップグリッド上gridRender jsの関数を呼び出します。 renderFunは、レンダリングする列セルを呼び出すたびに呼び出します。

注:私はコードをテストしていないだけでテストコードとみなし、必要に応じて変更します。

+0

これは良い解決策にも見えますが、私は上記の他のソリューションと一緒に行きました。しかし、私は将来これに戻ってくるかもしれません。 – stuttsdc

+0

これはあなたの選択ですが、cfc関数のクエリに書き込むことは他の目的では再利用できないようにすることはお勧めできません。 –

関連する問題