我正在使用jqgrid,我有一个带下拉列表的过滤器行,允许用户从项目列表中进行选择。我认为加载所有下拉列表浪费了很多周期,因为人们可能不会选择其中任何一个。
无论如何都要推迟ajax调用以获取下拉列表,直到有人实际点击下拉过滤器中的箭头。我看到其他一些网格库就是这样做的。
答案 0 :(得分:3)
检查出来:
<强>标记强>:
<select id="ddl">
<option value="-1">Select One</option>
</select>
<强>的jQuery 强>:
$("body").delegate("#ddl", "focus",function(event){
//ajax call here, and then append items
$(this).append("<option value='1'>Option 1</option>");
$(this).append("<option value='2'>Option 2</option>");
$(this).append("<option value='3'>Option 3</option>");
$(this).append("<option value='4'>Option 4</option>");
$(this).append("<option value='5'>Option 5</option>");
});
jsFiddle :http://jsfiddle.net/9asfG/
答案 1 :(得分:1)
我认为你也可以在服务器端做到这一点,在代码中你可以添加一个if语句来检查$ _POST [“_ search”]里面,如果这是真的,那么在$ _POST里面循环,查找是否dropdown-search条件已发布,如果不是,则回显一些空白或任何停止代码,如果是,则继续从DB加载数据。
PS:我个人认为,或许“推迟”结果并不是一个好主意,因为用户可能不知道他需要先选择下拉菜单,从用户体验的角度来看,这不是一个好的设计。