-1

非常に大きなソフトウェアを ExtJS Grid に移植しています。グリッドのセル内に配置されたスパンに、大量のデータ (つまり、大量のデータ) がオンデマンドでロードされます。

グリッド セルが<span id="foo_bar'></span>コンテンツとしてあり、特別な ajax ハンドラーがバックエンドをポーリングして更新された情報を取得し、利用可能になるとスパンがそれで満たされると想像してください。

ここで、グリッドの一部を折りたたんでから再度展開すると、自動的に満たされたセルのコンテンツがすべて失われ、空のスパンが残ります (最初に開始した場所)。

正しい方法は、ストアをセットアップし、すべてのデータをストアにプッシュすることです。しかし、上で述べたように、私は非常に大きなレガシー ソフトウェアを ExtJS に移植していますが、ここではあまり選択肢がありません。

グリッド セルの値を自動的にストアにプッシュする方法はありますか?

アップデート:

グリッドには、2000 個のセルがロードされているとします (これは非常に異なる可能性があります)。すべてのセルには、さまざまなグレードの HTML が含まれています。ほとんどの場合は ですが、ほとんど何でもかまいません (1 つのセルに複数のスパンまたは div を含む)。バックグラウンドでは、新しいデータをほぼリアルタイムで HTML ページにプッシュするコメット プロセスがあります。このデータは、ID またはクラス、またはその両方に基づいて、対応する SPAN および DIV に取り込まれます。

私が達成したいのは、次のいずれかです:a)グリッドのモデルは、セルの新しいhtmlコンテンツで原子的に更新されます(どうすればこれを達成できますか)? b) ツリーのノードを折りたたむ/展開するときに、モデル データが新たに再ロードされません。

aまたはbのいずれかが可能ですか?もしそうなら—どのように?

4

1 に答える 1

0

「特別な ajax ハンドラー」が正常に値を返したら、ストアを更新するだけです。dom を手動でいじる代わりに。

したがって、成功のコールバックでは、-> loadData()のようなことを行います

編集:

非常に悪いレガシーコードを使用しているようです:)単純なコード行をajaxハンドラーに追加するのが大変な場合..ただし、domリスナーをアタッチすることはできますが、それは非常に悪い習慣です. ここにいくつかのイベントがあります

編集:

これは、dom イベントをリッスンする方法の使用例です。これはむしろ純粋な js ソリューションですが、まあ..動作します..

于 2012-09-24T07:56:46.910 に答える