处理选择框中的大量数据

时间:2011-02-18 00:07:43

标签: jquery html-select large-data

您好我正在使用jQuery并从我的一个mySQL表中检索“items”。我在该表中有大约20,000个“项目”,它将在我的表单中用作搜索参数。所以基本上他们可以搜索包含“项目”的“购买”。

现在我需要他们能够从下拉列表中选择“项目”,但是用20,000个“项目”填充下拉列表需要很长时间。我想知道是否有任何jQuery插件支持自动完成下拉框的分页。

这样,用户可以开始键入过滤列表的前几个字母,或者只需单击箭头即可看到20个项目,最后一个是“请点击更多”。

我对处理大型数据集和使用所述数据集填充HTML选择框的任何其他建议持开放态度。

此搜索页面上可能有多个选择框,用户可以选择“项目”或“客户”或其他任何内容,然后单击“搜索”。

3 个答案:

答案 0 :(得分:4)

我认为没有针对你所追求的特定插件,但你应该能够很容易地自己编写一个插件。

基本上这个概念是这样的:

  • 使用jQuery $.ajax从数据库中检索数据
  • 将2个参数从jQuery传递到数据库SELECT语句
    • 关键字
    • 的PageIndex
  • 搜索以关键字开头的所有项目(自动填充),但仅返回特定数量的结果(即20)
  • 在“下拉列表”中填充结果后,请检查确实存在多于 20 项目,并附加名为的额外<option>请点击了解更多... < /强>
  • 通过检查它的索引并使用下拉列表$.ajax事件(它的索引将是20,因为它是列表中的第21项)并将<option>绑定到该onchange PHP/mySQL您发送到数据库的pageIndex

如果您需要{{1}}中的分页方面的更多帮助,请查看此tutorial

答案 1 :(得分:4)

使用数据集时,需要使用Ajax ...

查看这些自动填充插件:

http://www.pengoworks.com/workshop/jquery/autocomplete.htm

http://code.google.com/p/jquery-autocomplete/

答案 2 :(得分:2)

20000项目对于任何类型的下拉列表来说都太大了,除非该列表仅返回响应搜索的项目,最好是包含至少几个字符的搜索。 “点击更多”似乎很弱,并不是下拉列表的典型行为。如果用户想要的项目是列表中的10000个项目怎么办?

假设您的项目是简单的名称/值对(字符串名称,整数ID等)。

然而,

JSON可以轻量级方式表示20000个项目。您可以创建一个简单的客户端对话框(或列表),它绑定到这些项目,通过它们的页面,并提供实时过滤。这绝对是可能的(我已经完成了)但它需要相当数量的自定义脚本或现有控件。

这种方法的优点是你可以在每次击键时进行实时搜索。令人惊讶的是,JavaScript将非常容易地处理大型数据集上的简单搜索。

如果性能很关键,即使在JSON中,20000项仍然太大。将客户端脚本与用于搜索,过滤,分页等的服务器代码相结合,仅向用户显示一组有限的结果。

编辑:如果您不想编写自己的数据表控件,这里有一个使用JSON的网格的可能选项:http://developer.yahoo.com/yui/examples/datatable/