2007年4月20日金曜日

dhtmlxGridの使い方(2)

最新版ではXML渡しによるリンク表示が可能となったけど、
旧バージョンでもそれが使える。
下手にバージョンアップしたく無ければ、最新パッケージをダウンロードし、

dhtmlXGrid_excell_link.js

というファイルをjsディレクトリにコピーし、
読み込ませ、

<script src="librarys/scand/js/dhtmlXGrid_excell_link.js"></script>

設定をlinkにし、

mygrid.setColTypes("link,ro,ro");

XML出力で、

<cell>ラベル^リンク先^ターゲット</cell>

としてやることで、サンプルページみたいなリンクが実現する。
出来れば、<![CDATA[]]>でくくって出力したほうがよい。

ちなみに、この手法でjavascriptを記述するのは難しい。
自動でonclickが付与されてしまう為、
リンク先にjavascriptを書いてもまともに動作しない。

dhtmlXGrid_excell_link.js を dhtmlXGrid_excell_locallink.js 
などというファイルでコピーし、



function eXcell_link(cell){
this.cell = cell;
this.grid = this.cell.parentNode.grid;
this.edit = function(){}
this.getValue = function(){
if(this.cell.firstChild.getAttribute)
return this.cell.firstChild.innerHTML+"^"+this.cell.firstChild.getAttribute("href")
else
return "";
}
this.setValue = function(val){
var valsAr = val.split("^");
this.setCValue("<a href="'#'" onclick="'(isIE()?event:arguments[0]).cancelBubble="true;">"+valsAr[0]+"</a>");
}
}



修正後は、

<cell><![CDATA[リンク名^スクリプト]]></cell>

でjavascriptをonclickで実行出来る。

3 件のコメント:

Unknown さんのコメント...

こんにちわ 始めまして
dhtmlxGridを調べていてこちらに辿り着きました。
ドキュメント関係が全て英語なので悪戦苦闘で困っています。
項目ごとにリンク設定する方法は理解できたのですが、行単位でそれを可能にすることは可能でしょうか?
動きとしては「選択行をクリックするとリンク設定したとこにジャンプする」具合です。

kdservice さんのコメント...

こんにちは、初めまして~。
選択行に着色する処理のところにハンドラを追加出来たような気がします。
週末チェックしてみます。

Unknown さんのコメント...

お返事ありがとう~
行ごとにリンク先が設定できれば幸いです