具有一百万项的数据绑定下拉列表

时间:2012-01-17 09:32:41

标签: asp.net drop-down-menu databound-controls

Pls什么是在ASP.NET上绑定项目的最佳方法(从TABLE中选择COLUMN)和一百万行。

我现在拥有的是冻结ASP.NET页面,因为dropdownList尝试从SQL SERVER填充超过一百万行数据。

由于

雅法

7 个答案:

答案 0 :(得分:2)

对于如此大的列表,您需要先问自己一些事情

  • 你真的想在下拉列表中输入100万行吗?
  • 根据之前的选择显示几个下拉菜单并填写下一个下拉列表会不会更容易吗?
  • 您可以使用div来模拟下拉列表,当滚动条到达结尾时,您可以加载更多行...

最佳方法可以按类别进行排序,并向用户显示一个向导一步一步的过程以及几个下拉菜单,因为我怀疑任何人都会阅读100万条记录。

如果您仍想在一个下拉列表中执行显示所有内容的奇怪步骤,您可以轻松地将结果缓存一段时间,并且当请求填充数据时,它将会使用内存中的东西,从未到达数据库。

或者,如果它的变化不大,你可以从文本文件加载100万行,连接数据库的速度更快......然后根据请求或自动刷新该文件。

答案 1 :(得分:1)

我认为你不应该将100万条记录绑定到DropDownList。这对可用性非常不利,用户应该如何找到他们想要的选项?

如果可能,应将这些内容分组为级联DropDownList,以避免超时问题并提高可用性。

以下是ASP.NET AJAX控件工具包级联DropDown的示例:

http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx

答案 2 :(得分:0)

最好的办法就是不要这样做!没有用户想从一百万行中选择你最好的选择是进行某种渐进式搜索,当用户开始输入时,他们会得到一个选项列表

答案 3 :(得分:0)

将冻结时间视为一个重要警告信号。为什么要让用户在1000K项目中进行选择。这将是一个很大的UI失败。使用带有JSON Web服务调用的自动完成控件。

答案 4 :(得分:0)

最好的方法是让网格页面和DropDowns进行过滤。

在网格页面中,您只显示前X个记录,用户可以移动到下一个/上一个/第一个/最后一个页面,依此类推。

在过滤控件中,您要求用户键入前x个字符,然后仅显示匹配的记录。

答案 5 :(得分:0)

如果你真的想这样做,首先你可以在搜索你的用户后绑定你的对象,否则如果用户搜索没有任何绑定全部。在.net 4中,您可以使用Linq,这是使用此技术获取数据的最佳方式。但它太多了,无法向您的用户展示。

答案 6 :(得分:0)

正如每个答案所述,将一百万条记录列入下拉列表并不是一个实际的选择。来自Smashing Magazine的人们在一个更好的方法上写了一个奇妙的(类似的)article - 特别关注用户体验的大幅下降,非常值得一读。