我对包含表格(gridview)的asp.net 2.0网页抱有雄心勃勃的要求,网格中的每一行都包含6个用于数据输入的选择(下拉)控件。将显示的行数取决于用户的搜索参数,这些参数在页面的另一个区域中指定。不幸的是,使用指定的默认(甚至是基本)搜索参数,网格可能包含数百行。我注意到浏览器,在这种情况下是IE8,一旦我到达大量行就开始表现得相当不规律 - 没有文件证明行开始出现问题的行数。例如,尝试查看页面的来源会导致来自IE的消息说明页面存在问题,迫使浏览器重新加载它,而且我从未获得源代码。显然,页面加载和渲染速度也相当慢。
我知道我的解决方案可能涉及分页网格视图,使其每页只显示20行左右,并且我必须编写代码来处理用户更改时保存下拉列表中的更改页面。我也可以在gridview上关闭viewstate。但是,我真正想要提出的问题是 - 有没有人看过一个记录的规则,表明HTML浏览器表单应该包含的输入控件的最大数量?在搜索后我在互联网上找不到任何东西,我怀疑答案可能是浏览器根据其运行的机器配置可以处理的任何内容。您使用的任何经验法则?
感谢您的任何建议。
富
答案 0 :(得分:1)
这几乎与客户端机器的内存有关。据我所知,控件数量没有实际限制。在一天结束时,它是浏览器引擎,它呈现代码所指示的任何内容。那里没有if声明说:
if (this.InputControls.Count > N) then GoBang();
您可能遇到大量控件的不稳定行为可能是由于机器的CPU和内存命中而导致的控件呈现。如果部署项目并在几个不同规格的计算机上运行该站点,您可能会发现不同。
但是,那么,你真的需要如此大量的控制吗?你说你认为你应该使用分页的事实表明你知道你做错了。正确地执行并实现分页,否则您将遇到问题以便以后解决并抱怨客户;)。
答案 1 :(得分:1)
有更好的设计吗?什么是使用场景?
例如,提出了诸如此类的要求(我不太喜欢称之为“网上的Excel”),提供一个基本上只读的数据集是否可行,然后使用jQuery来改变单个数据集单击时编辑控件的行?甚至,使用一些服务器端分页,模拟“无限滚动”,同时仍然一次只加载20行?您可以通过这种方式保持显示的(和DOM存储的)数据更小,并减少浏览器中编辑控件的数量,并且最重要的是仍然提供大多数(如果不是全部)所需功能。
一般来说,一次可见的大量输入控件是可用性的噩梦,在视觉上非常分散注意力,难以排队/处理。对于像我上面所描述的解决方案,你几乎无疑会更好。是的,这将是大量的客户端脚本,但它将更容易在浏览器,用户,甚至最终你。