ASP.NET Dynamic GridView 在保存 300 多行时变得无响应。 BtnSave_Click 事件触发 150 行

问题描述 投票:0回答:1

我有一个 ASP.NET Web 应用程序,用户可以在其中动态地将行添加到 GridView。每行包含文本框和复选框。新行的数量是根据用户请求创建的,动态填充新行没有问题。但是,我在尝试保存数据时遇到了问题。

问题:

btnSave_Click 事件适用于少量行,但在尝试保存 300 多行时页面变得无响应。 我已禁用 GridView 的 ViewState 以减少数据大小,我怀疑这可能会导致问题。

详情:

  1. GridView 中的每一行都包含用户填写的文本框和复选框。
  2. GridView 的 ViewState 被故意禁用,以减少客户端和服务器之间传输的数据。
  3. 该问题在多个浏览器中都是一致的。
  4. 无响应期间不会记录任何特定错误消息。

页面应该能够处理更多的行数。

asp.net ajax updatepanel viewstate dynamicgridview
1个回答
0
投票

嗯,我从来没有见过一个网站会向用户推送 300 行,不是吗?

简单的事情太多行了。

引入数据分页器,这将减少发送到浏览器的标记。

但是,请记住,数据分页器仍然会从数据库中提取 300 条记录,但仅发送 20 行(或任何页面大小)。

我的意思是,数据库系统是如何工作的?简单的事情是基于网络、会计系统还是其他什么?

您拉动一行进行编辑。

由于添加数据分页器相当容易,那么我们不要为网格视图使用数据分页器,而是滚动我们自己的自定义分页器。

我们这样做是因为我们要编辑一个包含 150,000 行的表。

我们的目标应该是不允许任何超过 1/2 秒的交易或响应时间(否则我们只是在折磨我们的用户)。

此外,我们不会使用 ajax 或任何客户端代码来加快速度。我将弹出一个对话框(jQuery.UI 一个)来编辑一行,但这对性能的影响为零。

所以,有 150,000 行,简单的 BASIC 代码(我还是喜欢基本代码,而且性能非常棒)。

因此,示例代码的运行方式如下:

请注意,您永远不会察觉到任何接近 1/2 秒的处理,但我们正在编辑一个包含 150,000 行数据的表。

我将加载数据按钮移至一个按钮,只是为了表明我没有使用加载的数据启动页面,而是想演示我们正在加载数据以及表格加载的速度。

所以,我们有这个:

注意页面加载的速度。

注意分页到下一页的速度有多快。

注意编辑弹出的速度有多快,以及保存按钮的速度有多快。

所以,我正在喝咖啡休息一下,当我回来时,我将发布一些我用来加载上述内容的代码。然而,没有真正的特殊代码,但像任何好的数据库应用程序(桌面或Web)一样,简单的概念是限制从数据库中提取的数据。对于基于网络的,那么限制拉入浏览器的行很重要,因为与桌面软件相比?

在桌面领域,你有一个可以直接写入显示内存的CPU。

在网络领域,您必须将 HTML 发送到客户端浏览器,因此这是您必须小心处理的非常有限的资源,并且不要将 300 行数据发送到缓慢的显示。

© www.soinside.com 2019 - 2024. All rights reserved.