2011-12-20 12 views
1

ロード時に別のaspページへのjavascriptコールを実行して、XMLを取得してボックスにロードする従来のASPページがあります。それは約24kのオプションをロードしなければならない。言うまでもなく、これはやや面倒です。24kエントリを選択リストに効率的にロードする

これらはすべてすぐに読み込まれる必要はなく、ページがハングしない限り実際に読み込むのに時間がかかる場合は問題ありません。ページはie6 +(バマー)で動作する必要があります。

私は、ユーザーが特定のセクションをスクロールすると100個以上読み込むと考えていますが、ie6で動作する適切なプロパティをスクロールバーの位置に見つけることはできません。私は特定のオプションのonmouseoverを使用することを考えました(つまり、より多くの結果のために "ホバー" ...)が、イベントは発生しません。

誰かが正しい方向に私を指すことができるなら、私は本当にそれを感謝します。 :>「選択リスト」とは、

+0

自動補完フィールドはどうですか? – malletjo

答えて

-1

ドロップダウンボックスでこれを行うことを絶対に止めてしまった人には、ブラウザをロックしないようにするにはsetTimeoutsを使用するしかありませんでした。クロムでこれは完全に正常に動作しますが、IEが受け入れることができる最も低いタイムアウトは13MSのようなものであり、実際にロード時間を邪魔します。それの上に私は(個人的に)それはかなり醜い解決策だと思う...しかし、それはフォームをロックするよりも良いと思います。

var i = 0; 
function doStuff() 
{ 
// code to execute, ie, add items 
i++; 
if (i != end of loop) 
{ 
setTimeout(doStuff, 1); 
} 
setTimeout(doStuff, 1); 

Iが見つかったアドバイスの別の部分は、すべての項目が追加されるまで(単に「なし」にstyle.display設定)コードフラグメントを使用するか、ドロップダウンボックスを非表示にすることで、リフローを回避することでした。

+0

これは私が考える本当に悪い解決策です。あなたはDOMを膨らませて、あなたはおそらくサーバー*ロット*を照会しようとしています、あなたは必要ではないデータをロードされ、帯域幅を無駄にします。これは小さなウェブサイトには適しているかもしれませんが、それはちょっと変わっていません。 – Layke

+0

一歩踏み込んで制約を見れば、はるかに良い選択肢はありません。大半のユーザーは<200と見なされ、大部分のユーザーはそれを使用しません。ロード時にこれを設定するのではなく、最初のページ読み込み時間に達することはなく、ユーザーはこのフォームを引き続き使用し、この要素を検索として使用しない場合はフォームを送信することもできます。私はあなたの答えを高く評価しましたが、カスタムコントロールは誰にとっても実行可能なオプションではありません。特に大きなアプリケーションに軽量な変更を加えようとするときにはそうです。 – Snuffleupagus

+0

そして明らかにするために...それは一度問い合わせます。これが実行されるたびにクエリを実行しているという印象を受ける理由はわかりません。 – Snuffleupagus

0

私はあなたがHTML要素要するに

<select> 
    <option>option 1</option> 
    ... 
    <option>option 24000</option> 
</select> 

を意味推測、選択リストに複数10-15のオプションは本当に悪いユーザビリティがあります。したがって、これがあなたの場合であれば、ロケット科学者でさえ、24000のオプションの中から正しいオプションを見つけて選択するのは難しいでしょうから、相互作用を再考したいかもしれません。

+0

残念ながら、これは新鮮なプロジェクトではありません。私は何が私に渡されたのかと固執しています。 :/ – Snuffleupagus

1

サーバーサイドのバックアップストアのようなものを使用してアイテムを選択リストに遅延ロードするサービスを設定する必要があります。

この問題に取り組む場合は、JsonRestStoreルートを下り、Dojo Toolkitを使用して必要なアイテムをリクエストし、次にそれらをComboBox/FilteringSelectに移入します。

ここにいくつかのリソースがあります。

http://livedocs.dojotoolkit.org/dojox/data/JsonRestStore

そして、ここでFiltering Selectは何ができるかのデモです。

最終的には、これらのすべてをDOMにロードすることは常に悪い考えです。グリッドなどを使用するか、入力時にプレディクタを使用して絞り込む必要があります。

私は約5百万のアイテムを持つグリッドに電力を供給するJsonRestStoreを使用します。ユーザーがページを下にスクロールすると、新しいアイテムが読み込まれます。それらがスクロールすると、サーバーから25個のアイテムを引き出す必要があることが検出され、新しいクエリが実行され、グリッドに読み込まれます。

関連する問題