1

リストの高さがリスト内の現在の値の数と一致するように、コンボボックスのリストのサイズを変更する方法を知りたいと思っていました。

たとえば、ユーザーがボックスに「62」と入力すると、オートコンプリート機能が ajax 呼び出しを行い、これに一致する値をデータベースから取得します。100 個の値が返されたとします。リストには収まりきらないほど多くのデータがあり、スクロール バーがあるため、リストの高さは maxHeight 値 (300px) になります。完全。

しかし、ユーザーは「62」(「623」) の後に「3」を入力するため、現在のストア (100 個の値) をフィルター処理し、「623」に一致しない値をすべて削除します。これで 4 つのエントリが残ったとします。

問題は、リストがまだ 300px に拡大されているのに、値が 4 つしかないことです。明らかにスクロールバーはありませんが、データベースからデータを新しくプルした場合と同じように、データに合わせて高さを縮小したいと思います (新しいストアをロードすると機能します)。

私は次のことをしました:

qe.combo.list.setHeight(qe.combo.maxHeight)                  
if (this.getStore().getCount() * 20 < qe.combo.list.getHeight()){
    qe.combo.list.setHeight(this.getStore().getCount() * 20)
}  

1つの状況を除いて、これはうまくいくようです。ドロップダウン (ピッカー?) リストがコンボボックスから下に開くページでは、これはうまく機能します。

ただし、コンボボックスがページの下部近くに配置されている可能性がある画面では (リストがコンボボックスの上に表示されます)、リストの高さを変更すると、下から上に向かって短くなります。つまり、ボックスが 300px で、私が短くした場合4 つの項目を 80px に変更すると、ボックスは正しく 80px になりますが、コンボボックスとリストの間に 220px のギャップが生じます。それは理にかなっていますか?基本的に、リストがコンボボックスの下にある場合と同じように短縮します...リストがボックスの上にあるという事実は考慮されていません。

私は本当にこれで途方に暮れています。どんな助けでも大歓迎です!

4

1 に答える 1