我将组合框用于自动完成目的,我想知道如何调整组合框列表的大小,以使列表的高度与列表中的当前值数相匹配。
例如,用户在框中键入“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)
}
除了在一种情况下,这似乎工作正常。在下拉(选择器?)列表从组合框向下打开的任何页面上,这都很好。
但是在组合框可能位于页面底部附近的屏幕上(这使得列表在组合框上方打开),然后更改列表的高度会从下向上缩短它 - 这意味着如果框是 300 像素并且我缩短了它4 个项目的 80 像素,框将正确地为 80 像素,但现在组合框和列表之间会有 220 像素的间隙。那有意义吗?基本上,它会以与列表位于组合框下方的相同方式缩短它......它没有考虑到列表位于框上方的事实。
我真的对这个家伙不知所措。任何帮助将不胜感激!