Pls什么是在ASP.NET上绑定项目的最佳方法(从TABLE中选择COLUMN)和一百万行。
我现在拥有的是冻结ASP.NET页面,因为dropdownList尝试从SQL SERVER填充超过一百万行数据。
由于
雅法
答案 0 :(得分:2)
对于如此大的列表,您需要先问自己一些事情
最佳方法可以按类别进行排序,并向用户显示一个向导一步一步的过程以及几个下拉菜单,因为我怀疑任何人都会阅读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 - 特别关注用户体验的大幅下降,非常值得一读。