10.高效分布

  • ListView默认的分页是先从数据源取得所有数据,然后再截取当前页面的部分,在数据量非常大的情况下效率非常低,因此默认的分布基本不能用。应该是只从数据源取得要显示的数据即可。
  • SQL中语句中取得分页数据的方法为:Select * ,ROW_NUMBER() over(order by 排序字段) as rownum From Table. ROW_NUMBER()函数是SQL2005之后提供的一个计算结果集行数的函数,over中指定排序规则,Row_Number()从1开始。只是把数据中的记录从1排序。
  • SQL语句可以这样排序:Select * from (Select id,name,age,Row_Number() over(order by id) rownum from table1) as t1 where t1.rownum>50 and t1.rownum<=100,取第51到100条的记录。
  • 在强类型DataSet中增加取得所有数据条数的方法QueryCount,增加取得指定行数范围数据的方法GetPagedData:Select * from (select ...,ROW_NUMBER() over(order by ...) rownum from table1) t where t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows.
  • 由于数据集编辑器不支持(不是运行时不支持,只是设计器不会自动帮我们生成一些东西)ROW_NUMBER(),所以创建完成后需要手动在GetPagedData属性的Parameters中增加两个参数:startRowIndex,maximumRows(参数名必须是这两个,这是由ObjectDataSource的StartRowIndexParamterName\MaximumRowsParamterName确定的,一般不需要改,当然你也可以用其它名称,但要在属性中改成你自己的名字),都为Int32类型。
  • 先按照正常的流程配置ObjectDataSource,让ListView自动生成Template,再修改ObjectDataSource的EnablePaging="True",SelectCountMethod设置为取得行数的方法。
  • ObjectDataSource中EnablePaging属性设置为True,SelectCountMethod设置为QueryCount,SelectMethod设置为GetPagedData.
  • 如果出错的话看看是不是没有放置内置的DataPager或者外置的DataPager的PagedControlID没有指向ListView.
  • DataPager默认是用PostBack机制,显示不到地址中,不利于网友间共享,只要指定QueryStringField属性(比如pagenum)就可以实现超连接形式的分布连接。

实例练习:

   给一数据表中的数据显示出来,每10条为一页。

  1.建立数据表及强类型数据集(操作步骤忽略)

  2.在强类型数据集中建立以下过程:GetAllData方法:SELECT COUNT(*) FROM T_User,主要是得到总的记录数。GetPageCount方法:select id, name, age from
(
SELECT id, name, age,ROW_NUMBER() over(order by id) rownumber FROM dbo.T_User
) t where t.rownumber>@startrow and t.rownumber<=@startrow+@pagecounts 主要是用于得到哪一页中的数据。要手工增加@startrow和@pagecounts参数,这两个参数没有严格按照以上的参数来设置,记得以后要修改ObjectDataSource中的相关属性。

  3.在web表单上放上ObjectDataSource和ListView,先按正常的配置进行操作和分页功能。再在ObjectDataSource的向导进行操作,在“定义方法”中选择GetPageCount来得到每页的值,其它的不用处理 。

  4.修改ObjectDataSource的相关属性,记着要设置EnablePaging为true哦。如下图源码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="高效分布.aspx.cs" Inherits="行命令设置.高效分布" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title>
</head>
<body><form id="form1" runat="server"><div><asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete" EnablePaging="True" InsertMethod="Insert" MaximumRowsParameterName="pagecounts" OldValuesParameterFormatString="original_{0}" SelectCountMethod="GetAllData" SelectMethod="GetPageCount" StartRowIndexParameterName="startrow" TypeName="行命令设置.DAL.DataSetUserTableAdapters.T_UserTableAdapter" UpdateMethod="Update"><DeleteParameters><asp:Parameter Name="Original_id" Type="Int32" /></DeleteParameters><InsertParameters><asp:Parameter Name="name" Type="String" /><asp:Parameter Name="age" Type="Int32" /></InsertParameters><UpdateParameters><asp:Parameter Name="name" Type="String" /><asp:Parameter Name="age" Type="Int32" /><asp:Parameter Name="Original_id" Type="Int32" /></UpdateParameters></asp:ObjectDataSource><asp:ListView ID="ListView1" runat="server" DataKeyNames="id" DataSourceID="ObjectDataSource1" InsertItemPosition="LastItem"><AlternatingItemTemplate><tr style=""><td><asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" /><asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" /></td><td><asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' /></td><td><asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' /></td><td><asp:Label ID="ageLabel" runat="server" Text='<%# Eval("age") %>' /></td></tr></AlternatingItemTemplate><EditItemTemplate><tr style=""><td><asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" /><asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" /></td><td><asp:Label ID="idLabel1" runat="server" Text='<%# Eval("id") %>' /></td><td><asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' /></td><td><asp:TextBox ID="ageTextBox" runat="server" Text='<%# Bind("age") %>' /></td></tr></EditItemTemplate><EmptyDataTemplate><table runat="server" style=""><tr><td>未返回数据。</td></tr></table></EmptyDataTemplate><InsertItemTemplate><tr style=""><td><asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="插入" /><asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="清除" /></td><td>&nbsp;</td><td><asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' /></td><td><asp:TextBox ID="ageTextBox" runat="server" Text='<%# Bind("age") %>' /></td></tr></InsertItemTemplate><ItemTemplate><tr style=""><td><asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" /><asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" /></td><td><asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' /></td><td><asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' /></td><td><asp:Label ID="ageLabel" runat="server" Text='<%# Eval("age") %>' /></td></tr></ItemTemplate><LayoutTemplate><table runat="server"><tr runat="server"><td runat="server"><table ID="itemPlaceholderContainer" runat="server" border="0" style=""><tr runat="server" style=""><th runat="server"></th><th runat="server">id</th><th runat="server">name</th><th runat="server">age</th></tr><tr ID="itemPlaceholder" runat="server"></tr></table></td></tr><tr runat="server"><td runat="server" style=""><asp:DataPager ID="DataPager1" runat="server" QueryStringField="pagenum"><Fields><asp:NumericPagerField /></Fields></asp:DataPager></td></tr></table></LayoutTemplate><SelectedItemTemplate><tr style=""><td><asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" /><asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" /></td><td><asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' /></td><td><asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' /></td><td><asp:Label ID="ageLabel" runat="server" Text='<%# Eval("age") %>' /></td></tr></SelectedItemTemplate></asp:ListView><asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /></div></form>
</body>
</html>

 5.生成解决方案后运行,你会发现可以正常分页了,但会发现不论是第一页还是第4页时,地址栏都是没有变化的,当你想把第3页的连接给一个朋友看时,会发现当打开这个连接时显示的还是第一页。 我们可以在  DataPager的属性中设置QueryStringField值为"pagenum"。这样你再运行点击第一页的连接时,会在地址栏中显示?pagenum=...这样的数据,当你要把第三页的内容给朋友时,只要地址栏中有pagenum=这样的字样就可以直接查看第3页的数据了。

转载于:https://www.cnblogs.com/yagzh2000/p/3169797.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目测试~

这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业要求在哪里 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3340 团队名称 求莫名堂 作业的目标 学会进行项目的测试&#xff0c;并通过测试发…

boost_1_48_0 在VS2008下的安装 Boost.Asio安装

第一步&#xff1a;到官网www.boost.org&#xff0c;下载boost最新版boost_1_48_0.zip第二步&#xff1a;将boost压缩包解压到C盘根目录下(在C盘操作简单&#xff0c;不会出错)&#xff0c;目录为C:\BOOST_1_48_0,里面就是boost的源码和需要编译的文件及文档资料第三步&#xf…

线程----BlockingQueue

import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** 本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西…

D3D9 effect (hlsl)(转)

转:http://blog.csdn.net/leonwei/article/details/8212800 effect其实整合了shader和render state的控制两大部分内容 9.1 effect文件基本框架 part1 &#xff1a;shader state包括全局变量 shader数据结构定义&#xff0c;shader的实现 part2 &#xff1a;texture and sample…

boost_1.47在VS2010下的安装

第一步&#xff1a;到官网www.boost.org&#xff0c;下载boost最新版boost_1_47_0.zip第二步&#xff1a;将boost压缩包解压到C盘根目录下(在C盘操作简单&#xff0c;不会出错)&#xff0c;目录为C:\BOOST_1_47_0,里面就是boost的源码和需要编译的文件及文档资料第三步&#xf…

创建 WPF 不规则窗口

创建 WPF 不规则窗口 本文为khler原作&#xff0c;转载必须确保本文完整并完整保留原作者信息及本文原始链接  E-mail: khler163.com  QQ: 23381103  MSN: pragmachotmail.com   相对于用MFC创建不规则窗口&#xff0c;WPF创建不规则窗体的过程就显得相当享受了&…

公司运作 - 利润率、周转率

公司一般由市场部、研发部、财务部、人力资源部及其他辅助部门组成。分成了几个层面&#xff0c;如下&#xff1a; 宏观层面&#xff1a;业务范围、业务定位、专业化、多元化部门层面&#xff1a;各部门绩效、部门职责主体层面&#xff1a;跨部门事务&#xff0c;如产品研发涉及…

ffmpeg编解码详细过程

1. 注册所有容器格式和CODEC:av_register_all() 2. 打开文件:av_open_input_file() 3. 从文件中提取流信息:av_find_stream_info() 4. 穷举所有的流&#xff0c;查找其中种类为CODEC_TYPE_VIDEO 5. 查找对应的解码器:avcodec_find_decoder() 6. 打开编解码器:avcodec_open() 7.…

使用docker 起容器配置负载均衡(加权)

首先要准备三个nginx的容器&#xff1b; 第二个容器&#xff1a; 第三个容器&#xff1a; 进入第一个容器&#xff08;主容器&#xff09; 要配置的容器&#xff08;docker exec -it 容器id /bin/bash&#xff09; vi/etc/nginx/nginx.conf 修改配置 在http{ }中加入 vi/etc/…

茴香豆的n种写法之②——Sql据多个条件 查询每个条件的前N条记录

----------------------------------- Author: liangCK 小梁-- Title : 查每个分组前N条记录-- Date : 2008-11-13 17:19:23-----------------------------------> 生成测试数据: #TIF OBJECT_ID(tempdb.dbo.#T) IS NOT NULL DROP TABLE #TCREATE TABLE #T (ID VARCHAR(3),G…

PostgreSQL建表动作分析

首先&#xff0c;建立表&#xff1a; pgsql# create table tab10(id integer); CREATE TABLE pgsql# select 147525::regclass;regclass ----------tab10 (1 row)pgsql# 查看此时的文件信息&#xff1a; [pgsqllocalhost 16384]$ pwd /home/pgsql/DemoDir/base/16384[pgsqllo…

http 断点续传,Windows下HTTP方式单线程下载

http 断点续传www.diybl.com 时间 &#xff1a; 2011-05-20 作者&#xff1a;匿名 编辑&#xff1a;hawk 点击&#xff1a; 1128 [ 评论 ]-- 原理&#xff1a; 1. 打开本地文件fopen&#xff0c;移动文件指针到文件尾fseek 2. 获得文件大小ftell, 格式化HTTP请求头 &…

给创业者的30条建议

http://www.cocoachina.com/programmer/20150206/11119.html 去年年底的时候&#xff0c;我&#xff08;Firstround Review 主编&#xff09;在 Facebook 公司的咖啡厅里和 Caryn Marooney 交流着创业公司应该注意些什么事情。Caryn Marooney 现在是 Facebook 公司科技交流部门…

php swoole websocket vue 实现聊天室案例

代码地址: https://github.com/9499574/demo_chat_room 转载于:https://www.cnblogs.com/phper8/p/11017892.html

数据结构 练习21-trie的原理分析和应用

前言 今天具体分析一下trie树&#xff0c;包括&#xff1a;原理分析&#xff0c;应用场合&#xff0c;复杂度分析&#xff0c;与hash的比较&#xff0c;源码展现。大部分内容来自互联网&#xff0c;文中会注明出处。 原理分析 主要是hash树的变种&#xff0c;先看下图&#xff…

在辞职后的旅途中:我写了个App 创立了一家公司

http://www.cocoachina.com/programmer/20150206/11119.html 英文原文&#xff1a;How I built a startup while traveling to 20 countries 一年前&#xff0c;我离开了旧金山&#xff0c;变卖或者送掉了一切我所拥有的东西&#xff0c;然后买了一只 40 升的登山包。 我旅行到…

Android找工作系列之自定义View

...转载于:https://www.cnblogs.com/hbolin/p/11019959.html

POJ 1088-滑雪

矩阵里的数字代表当前点的高度&#xff0c;只能从高的点滑到低的点&#xff0c;求最长能滑的距离。初始点 不规定。我们可以向每个点的四周搜索&#xff0c;能走则就在当前距离加1。并将已经求的值保存在 二维数组中。&#xff08;记忆化搜索&#xff09; /*Accepted 252K …

PostgreSQL的 initdb 源代码分析之二十一

继续分析&#xff1a; setup_schema(); 展开&#xff1a; 实质就是创建info_schema。 cmd 是&#xff1a; "/home/pgsql/project/bin/postgres" --single -F -O -c search_pathpg_catalog -c exit_on_errortrue -j template1 >/dev/null infor_schem_file是&…

Be My Eyes app:我是你的眼

http://www.cocoachina.com/industry/20150122/10979.html Be My Eyes是丹麦软件工作室Robocat为一家同名非营利性企业推出的一款应用&#xff0c;主要通过视频聊天的方式将志愿者和视力受损的患者联系起来&#xff0c;从而实现远程协助的功能。 Be My Eyes的核心概念非常简单-…