2010年8月25日水曜日

ExtJS-97 ヘッダを拡張したらスクローラがでなくなった

気がつくと5日から更新してない。
JSは触ってたけどExtJSは触ってなかった。
GoogleMapAPIを触ってみたみたくてそっちで遊んでました。
あとはTwitterAPIで遊んでみたく。
それで慣れたらyouRoomAPIとか。youRoom、メンバーの食いつきはうまいこといったんだけど
その後、うまく展開できなかったから次の策を考えなければ。
あとは。Hyper Estraierってのを@Mt_blue81さんに聞いたのでそちらも。
やりたいことだらけですね。本当に。仕事じゃないから楽しいのかな?仕事でも楽しいんだろうな。

今年も残りわずかなので資格も取らなきゃいけなそう。
ExtJsとも疎遠になってしまうのかな。。
明日は勉強会。
================
さて、ExtJs-56 階層構造のつぶしこみ5ガントチャートのラインとカンレダへっだでやってたことをほじくりかえしたら
スクローラが消えてでないことがわかった。
もう一年前のことをもう一度掘り起こして実装の続きをするってわりときびしいw


このヘッダはロード後のコールバック内で動的にヘッダセル内に構築してて
その際に三行分に拡張するものだからスクローラがそのまま下に下がって
Gridの枠外にでてしまっていた。
仕方ないのでGridViewのコードを引用してヘッダをレンダリングするときに
スクローラを無理やり取得してヘッダ拡張分を引いてやることにした。
もうマジックナンバー埋めちゃってるけどw。

    
//ヘッダの描画
me.hedderRender = function() {
    var me = this,
    Element = Ext.Element,
    grid = me.getView().grid;
    el = Ext.get(grid.getGridEl().dom.firstChild),
    mainWrap = new Element(el.child('div.x-grid3-viewport')),
    mainHd = new Element(mainWrap.child('div.x-grid3-header')),
    scroller = new Element(mainWrap.child('div.x-grid3-scroller'));

    //YMD用カラムへYMDのテーブル構成をAppend
    var headercellElement = me.getView().getHeaderCell((me.config.model.configGenerator.columnModelConfig.length - 1));
   headercellElement.innerHTML = me.ganttManager.generateGanttHeader();

    //水平スクローラが押し出されてしまうのでヘッダ、スクローラともに明示的に再計算する
    headerHeight = mainHd.getHeight();
    scrollHeight = grid.getSize(true).height - ((headerHeight*2)-4);
    scroller.setHeight(scrollHeight);
}

まぁ、でるようになったっていうことで。









ねよ。

0 件のコメント: