请在 ASP.NET 上将项目从(从表中选择列)与一百万行绑定的最佳方法是什么。
我现在所拥有的是冻结 ASP.NET 页面,因为 dropdownList 试图从 SQL SERVER 填充超过一百万行数据。
谢谢
雅法
请在 ASP.NET 上将项目从(从表中选择列)与一百万行绑定的最佳方法是什么。
我现在所拥有的是冻结 ASP.NET 页面,因为 dropdownList 试图从 SQL SERVER 填充超过一百万行数据。
谢谢
雅法
对于这么大的清单,您需要先问自己一些事情
最好的方法是按类别分类并向用户显示一个类似向导的逐步过程,其中包含几个下拉列表,因为我怀疑任何人都会阅读 100 万条记录。
如果您仍然想在一个下拉列表中显示所有内容的奇怪步骤,您可以轻松地将结果缓存一段时间,并且当请求填充数据时,它将使用内存中的内容并且从未到达数据库。
或者,如果它没有太大变化,您可以从文本文件中加载 100 万行,这样连接到数据库的速度会更快……然后根据请求或自动刷新该文件。
我认为您不应该将 100 万条记录绑定到DropDownList
. 这对可用性非常不利,用户应该如何找到他们想要的选项?
如果可能的话,这些应该被分组到 cascadingDropDownList
中以避免超时问题并提高可用性。
以下是 ASP.NET AJAX 控件工具包级联下拉列表的示例:
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx
最好的办法就是不做!没有用户想从一百万行中进行选择,最好的办法是进行某种渐进式搜索,当用户开始输入时,他们会得到一个选项列表
将冻结时间视为一个重要的警告信号。为什么要让用户在 1000K 的项目中进行选择。那将是一个很大的 UI 失败。使用带有 JSON Web 服务调用的自动完成控件。
最好的方法是让 Grids 分页并让 DropDowns 过滤。
在网格页面中,您只显示前 X 条记录,用户可以移动到下一页/上一页/第一页/最后一页等等。
在过滤控件中,您要求用户键入前 x 个字符,然后仅显示匹配的记录。
如果您真的想这样做,首先您可以在与您的用户搜索后绑定您的对象,否则如果用户搜索没有绑定所有内容。在 .net 4 中,您可以使用 Linq,获取数据的最佳方式是使用此技术。但它太多了,无法向您的用户展示。
正如这里的每个答案所述,将一百万条记录竞价到下拉列表不是一个实际的选择。来自Smashing Magazine的人们写了一篇关于更好方法的精彩(类似)文章- 特别关注大型下拉菜单的用户体验,非常值得一读。