asp.net – 使用asp:GridView进行分页时是否需要重新检索数据?
我有一个.aspx搜索屏幕,在asp:GridView组件中显示搜索结果.搜索返回的记录最多可达1000条.我想在网格上实现分页,这样一次只能显示15条记录,用户可以翻阅结果.
我通过将搜索参数传递给WCF服务来检索记录,该服务返回特定实体对象的List.我创建一个Datatable并从List中为每个实体对象插入一个DataRow.然后我将网格视图绑定到Datatable. 这是我的网格在.aspx页面中的定义方式: <asp:GridView ID="gridCat" runat="server" AutoGenerateColumns="False" DataKeyNames="CatalogueID" HeaderStyle-CssClass="fieldHeading" RowStyle-CssClass="fieldContent" AlternatingRowStyle-CssClass="alternateFieldContent" Width="100%" AllowPaging="True" AllowSorting="True" AutoGenerateDeleteButton="True" PageSize="15"> 我在后面的代码(.aspx.vb文件)中也有这个方法: Sub GridPagingAction(ByVal sender As Object,ByVal e As GridViewPageEventArgs) Handles gridCat.PageIndexChanging gridCat.PageIndex = e.NewPageIndex gridCat.DataBind() gridCat.Visible = True End Sub 我的问题是:第一页正确呈现,即前15条记录正确显示.但是,当我导航到网格中的第2页时,GridPagingAction方法在服务器上被命中,但网格中没有显示任何内容 – 它只是空白. 我认为发生这种情况的原因是因为当第二页的请求命中服务器时,服务器上的数据表不再存在 – 是吗?而asp:GridView在渲染结果的第一页时,只从Datatble获取前15条记录并将它们发送回浏览器.因此,当第二页的请求进入其他记录(即记录16-1000)时,在任何地方都不存在 – 这是正确的吗? 如果是这样,什么是最好的解决方案 – 我无法看到如何实现分页而不必执行以下操作之一: >每次用户使用分页选项时重新执行搜索; 有没有更好的方法来做到这一点(或者我做错了)?如果没有,您认为哪3个选项最好?我倾向于选项2,因为我不认为选项1是高性能的,我不希望按照选项3将大量不必要的数据发送回浏览器. 解决方法
你说的都是正确的.您可以使用ViewState或Session来保持客户端或服务器端的数据,但如果您确实拥有那么多记录,那么仅收集您实际需要的数据可能是个好主意.
因此,如果要显示记录1到10,则对数据库执行查询,仅获取这10个记录.如果要显示下一个十,则使用相应参数执行另一个查询. 这将显着提高您的性能和内存使用率,如果调用您的数据库并不是太昂贵. 本文可能会为您提供如何执行此操作的开始: 如果你想要一个简单的解决方案而不需要任何额外的努力,我会查询每个回发的所有记录(你的选项#1).如果您想要性能最佳的解决方案并且开销不大,请使用自定义分页. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 带超时异常的reCaptcha验证
- asp.net – 当我尝试从数据库中删除一行时,我收到了太多的参
- asp默认文档不能在IIS7上运行
- ASP.NET / VB.NET:Dropdownlist SelectedIndexChanged没有
- asp.net-core – EntityFramework核心数据库首先接近多个表
- .net – Razor RTM中的声明性助手方法
- asp.net防sql注入
- asp.net – 是否有任何.NET标准用于处理本地化但允许用户自
- asp.net-mvc – 是否可以手动更新ModelState.IsValid?
- asp.net-mvc – MVC 3多个DisplayFor-Templates
- asp.net-mvc-2 – 在自定义模型绑定器中设置Mode
- asp.net – 数据库交互/业务逻辑在MVC中发生在哪
- asp.net-mvc-3 – ASP.NET MVC 3认证/授权
- 在asp.net生成的代码中没有“使用”引用
- asp.net – IIS 7.5几分钟后,Localhost停止解析
- asp.net-mvc – 用于电话号码或社会安全号码的Di
- asp.net – App_Licenses.dll和licx之间的关系是
- asp.net – 如何拒绝访问文件夹或文件
- asp.net-mvc – asp.net MVC 1.0和2.0货币模型绑
- asp.net – 如何使用ScriptManager删除IE8 ssl警