View Full Version : ext2.2からext2.2.1
ak_ext
13 Feb 2009, 3:26 AM
ext2.2からext2.2.1にバージョンを上げたのですが、
グリッドの挙動で、もしご
問題の内容がちょっとよくわからないのですが、サンプルコードをアップすることは可能ですか?
ak_ext
13 Feb 2009, 4:44 AM
サンプルコードですが、
◎呼び出し側のhtmlです。
onLoad時とresize時に呼ばれresize時は問題ありません。
//////////////////////////////////////////////////
//
// ウィンドウリサイズ
//
//////////////////////////////////////////////////
function synchSize()
{
PlanLedgerGridEx.thirdGrid.setHeight(39);
var d = document.body.clientWidth;
if (d > 1000) {
// プラン台帳一覧グリッド
document.getElementById("planLedgerBody_grid").style.width=d-26-285;
PlanLedgerGridEx.secondGrid.setWidth(d-26-285);
// プラン台帳サマリーグリッド
document.getElementById("planLedgerTotal_grid").style.width=d-26-285;
PlanLedgerGridEx.thirdGrid.setWidth(d-26-285);
// プラン台帳スク
翻訳したガイドラインをまだ掲載していないので、あれですが・・・
コードは「コードタグ(#マークのアイコン)」で囲ってください(かなり読むのに時間がかかります:(()
サンプルコードはできる限り「再現可能」なものにしてください(問題解決の時間が短くなるかもしれません:))
コードの中で問題のありそうな箇所をあらかじめ指摘してください(全部追いかけていると時間がかかります:-?)
上記に沿っていただければ、問題解決までの時間が短くなるはずです(多分)
ak_ext
15 Feb 2009, 5:57 PM
サンプルで再現できるようにしました。
問題箇所はちょっと分かりません。すみません。
解凍すると4ファイル htm1つ js3つができるので、
license.txtなどが置いてあるTOP階層に
すべて置いて
結論から言うと、2.2.1ではbody.onloadが呼ばれるタイミングがExt.onReadyより早くなっているからです。
ちょっと調べたのですが、2.2以前(2.0、2.0.1、2.1)では、IE(body.onload→Ext.onReady)とFF・Safari(Ext.onReady→body.onload)とブラウザによってタイミングが異なっていました(IEは7、FF・Safariは3で確認しました)。
これが、2.2になったときに、上記のどのブラウザでもExt.onReady→body.onloadの順番で呼ばれるようになっています。
ただ、上記タイミングはシンプルなHTMLの場合で、これにIFRAMEが入ってきたり、読み込む外部ファイルが増えてくるとExt.onReadyが2回呼ばれたり、全てのファイルが読み込まれる前に呼ばれたりとか、あるいはブラウザや環境によって全く異なる現象が起きていたようです(下記スレッド参照)
http://extjs.com/forum/showthread.php?t=43246&highlight=onready+onload
http://extjs.com/forum/showthread.php?t=53502&highlight=onready+onload
上記スレッドであげられていたバグを解決するために、Ext.onReadyの内容が2.2→2.2.1でかなり書き換えられています(core/EventManager.jsを参照)。
その結果、ak_extさんのプログラムの挙動が変わったのだと思われます。
従って、body.onloadで呼ばれているsyncSizeはExt.onReadyの中に移動するなりの変更が必要かと思われます。
ak_ext
16 Feb 2009, 5:47 PM
そう
ak_ext
16 Feb 2009, 6:23 PM
サンプル下部のグリッドデータが初期表示時に出ず、リサイズ時に出たのも、
グリッドのデータは取れていても下部のグリッドのサイズが、
調整されてない為に出ていないのでしょうか。
ak_ext
17 Feb 2009, 1:52 AM
jsのthis.thirdgrid = thirdgrid の後にsyncsizeを入れたら、
初期表示時に一瞬小さいグリッドが表示されるんですが、
その後大きくなりました。
onloadが先に走っているので、これはしょうがないですよ
Powered by vBulletin® Version 4.1.5 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.