[Seasar-user:7642] Re: [Teeda]非同期Gridでの不具合

O.Goto [E-MAIL ADDRESS DELETED]
2007年 5月 15日 (火) 16:42:12 JST


後藤(goto)です。

ブラウザを書くのを忘れていました。

Firefox2.0.0.3(WindowsXPSP2)
で確認しています。
IE6.0では問題なく幅の調整ができています。

07/05/15 に O. Goto<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 後藤(goto)です。
>
> 追加報告です。
> > また、現状のタイミングの
> > Teeda.THtmlGrid.adjustGridSize()
> > を残すとレイアウトが崩れてしまったので
> > 非同期で50件超の場合にはコールバックFunctionの終わりのみの方がいいみたいです。
> > もしかすると複数回コールバックが呼ばれる場合は一番最後のコールバックのみにした方が
> > いいのかもしれません。
> >
> 複数回コールバックが呼ばれるようにデータの件数を用意したところ、
> 予想通り幅の調整はうまくいきませんでした。
> ソート順で徐々に表示される文字幅が増えていくようなデータを用意して確認しました。
> コールバックが呼ばれる回数をカウントしておいて、最後に呼ばれたときだけ
> Teeda.THtmlGrid.adjustGridSize()
> を呼ぶようにしたところ幅の調整はうまくいきました。
> どのようにレイアウトが崩れるかを書き忘れていましたが、
> テーブルボディに該当する部分がテーブルヘッダに該当する部分より
> 幅が広くなってしまいます。
>
> 今のところ同期Gridにして逃げていますが、できれば非同期Gridにしたいと思っています。
> Teeda.THtmlGrid.adjustGridSize()
> を複数回呼んでも大丈夫なように変更するのが簡単だと思ったのですが、
> どうして複数回呼んだら駄目なのかが未だにわからず・・・
>
> 07/05/11 に O. Goto<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > 後藤(goto)です。
> >
> > Teeda Extensionで非同期Gridを使用していて、
> > prototype.js(http://www.prototypejs.org/)
> > を同時に使用すると、
> > 最初の50件以降の表示がされなくなってしまうことに気がつきました。
> >
> > ajax.jsを添付したパッチのように修正すれば回避できるようです。
> >
> > また、prototype.jsとは無関係ですが、
> > Teeda.THtmlGrid.adjustGridSize()
> > が呼ばれるタイミングは現状最初にHTMLが描画されるタイミングのみとなっているようで、
> > 同期Gridや非同期で50件以内であれば問題ないのですが、
> > 非同期で50件超の場合にレイアウトが崩れてしまう場合があります。
> > #GrigYのみしか確認していません。
> >
> > 非同期で50件超の場合には
> > Teeda.THtmlGrid.adjustGridSize()
> > をコールバックFunctionの終わりにすれば解決できると思います。
> >
> > また、現状のタイミングの
> > Teeda.THtmlGrid.adjustGridSize()
> > を残すとレイアウトが崩れてしまったので
> > 非同期で50件超の場合にはコールバックFunctionの終わりのみの方がいいみたいです。
> > もしかすると複数回コールバックが呼ばれる場合は一番最後のコールバックのみにした方が
> > いいのかもしれません。
> >
> >
> > ちなみに
> > Kumu.Ajax.executeTeedaAjax()
> > を下記のようにハックして確認しました。
> >
> > --------
> > var adjustGridSizeOrg = Teeda.THtmlGrid.adjustGridSize;
> > Teeda.THtmlGrid.adjustGridSize = function() {}; /* HTMLに書かれているものを無効化 */
> > var executeTeedaAjaxOrg = Kumu.Ajax.executeTeedaAjax;
> > Kumu.Ajax.executeTeedaAjax = function(callback, param, responseType) {
> >   var f = function(arg) {
> >     //alert("collback");
> >     var ret = callback(arg);
> >     adjustGridSizeOrg('xxxGridY'); /* callbak終わりにadjust */
> >     return ret;
> >   }
> >   f.toString = function() {
> >     return callback.toString();
> >   };
> >   return executeTeedaAjaxOrg(f, param, responseType);
> > };
> > --------
> >
> >
>



Seasar-user メーリングリストの案内