我有一个 ASP.NET Web 应用程序,用户可以在其中动态地将行添加到 GridView。每行包含文本框和复选框。新行的数量是根据用户请求创建的,动态填充新行没有问题。但是,我在尝试保存数据时遇到了问题。
问题:
btnSave_Click 事件适用于少量行,但在尝试保存 300 多行时页面变得无响应。 我已禁用 GridView 的 ViewState 以减少数据大小,我怀疑这可能会导致问题。
详情:
页面应该能够处理更多的行数。
嗯,我从来没有见过一个网站会向用户推送 300 行,不是吗?
简单的事情太多行了。
引入数据分页器,这将减少发送到浏览器的标记。
但是,请记住,数据分页器仍然会从数据库中提取 300 条记录,但仅发送 20 行(或任何页面大小)。
我的意思是,数据库系统是如何工作的?简单的事情是基于网络、会计系统还是其他什么?
您拉动一行进行编辑。
由于添加数据分页器相当容易,那么我们不要为网格视图使用数据分页器,而是滚动我们自己的自定义分页器。
我们这样做是因为我们要编辑一个包含 150,000 行的表。
我们的目标应该是不允许任何超过 1/2 秒的交易或响应时间(否则我们只是在折磨我们的用户)。
此外,我们不会使用 ajax 或任何客户端代码来加快速度。我将弹出一个对话框(jQuery.UI 一个)来编辑一行,但这对性能的影响为零。
所以,有 150,000 行,简单的 BASIC 代码(我还是喜欢基本代码,而且性能非常棒)。
因此,示例代码的运行方式如下:
请注意,您永远不会察觉到任何接近 1/2 秒的处理,但我们正在编辑一个包含 150,000 行数据的表。
我将加载数据按钮移至一个按钮,只是为了表明我没有使用加载的数据启动页面,而是想演示我们正在加载数据以及表格加载的速度。
所以,我们有这个:
注意页面加载的速度。
注意分页到下一页的速度有多快。
注意编辑弹出的速度有多快,以及保存按钮的速度有多快。
所以,我正在喝咖啡休息一下,当我回来时,我将发布一些我用来加载上述内容的代码。然而,没有真正的特殊代码,但像任何好的数据库应用程序(桌面或Web)一样,简单的概念是限制从数据库中提取的数据。对于基于网络的,那么限制拉入浏览器的行很重要,因为与桌面软件相比?
在桌面领域,你有一个可以直接写入显示内存的CPU。
在网络领域,您必须将 HTML 发送到客户端浏览器,因此这是您必须小心处理的非常有限的资源,并且不要将 300 行数据发送到缓慢的显示。