长沙企业如何建网站,专业科技网站建设,塘沽做网站的公司,天空建筑网站ListView默认的分页是先从数据源取得所有数据#xff0c;然后再截取当前页面的部分#xff0c;在数据量非常大的情况下效率非常低#xff0c;因此默认的分布基本不能用。应该是只从数据源取得要显示的数据即可。SQL中语句中取得分页数据的方法为#xff1a;Select * ,ROW_N…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.rownum50 and t1.rownum100,取第51到100条的记录。在强类型DataSet中增加取得所有数据条数的方法QueryCount,增加取得指定行数范围数据的方法GetPagedData:Select * from (select ...,ROW_NUMBER() over(order by ...) rownum from table1) t where t.rownumstartRowIndex and t.rownumstartRowIndexmaximumRows.由于数据集编辑器不支持(不是运行时不支持只是设计器不会自动帮我们生成一些东西)ROW_NUMBER(),所以创建完成后需要手动在GetPagedData属性的Parameters中增加两个参数startRowIndex,maximumRows(参数名必须是这两个这是由ObjectDataSource的StartRowIndexParamterName\MaximumRowsParamterName确定的一般不需要改当然你也可以用其它名称但要在属性中改成你自己的名字),都为Int32类型。先按照正常的流程配置ObjectDataSource让ListView自动生成Template,再修改ObjectDataSource的EnablePagingTrue,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.rownumberstartrow and t.rownumberstartrowpagecounts 主要是用于得到哪一页中的数据。要手工增加startrow和pagecounts参数这两个参数没有严格按照以上的参数来设置记得以后要修改ObjectDataSource中的相关属性。   3.在web表单上放上ObjectDataSource和ListView先按正常的配置进行操作和分页功能。再在ObjectDataSource的向导进行操作在“定义方法”中选择GetPageCount来得到每页的值其它的不用处理 。   4.修改ObjectDataSource的相关属性记着要设置EnablePaging为true哦。如下图源码  % Page LanguageC# AutoEventWireuptrue CodeBehind高效分布.aspx.cs Inherits行命令设置.高效分布 %!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhtml xmlnshttp://www.w3.org/1999/xhtml
head runatservertitle/title
/head
bodyform idform1 runatserverdivasp:ObjectDataSource IDObjectDataSource1 runatserver DeleteMethodDelete EnablePagingTrue InsertMethodInsert MaximumRowsParameterNamepagecounts OldValuesParameterFormatStringoriginal_{0} SelectCountMethodGetAllData SelectMethodGetPageCount StartRowIndexParameterNamestartrow TypeName行命令设置.DAL.DataSetUserTableAdapters.T_UserTableAdapter UpdateMethodUpdateDeleteParametersasp:Parameter NameOriginal_id TypeInt32 //DeleteParametersInsertParametersasp:Parameter Namename TypeString /asp:Parameter Nameage TypeInt32 //InsertParametersUpdateParametersasp:Parameter Namename TypeString /asp:Parameter Nameage TypeInt32 /asp:Parameter NameOriginal_id TypeInt32 //UpdateParameters/asp:ObjectDataSourceasp:ListView IDListView1 runatserver DataKeyNamesid DataSourceIDObjectDataSource1 InsertItemPositionLastItemAlternatingItemTemplatetr styletdasp:Button IDDeleteButton runatserver CommandNameDelete Text删除 /asp:Button IDEditButton runatserver CommandNameEdit Text编辑 //tdtdasp:Label IDidLabel runatserver Text%# Eval(id) % //tdtdasp:Label IDnameLabel runatserver Text%# Eval(name) % //tdtdasp:Label IDageLabel runatserver Text%# Eval(age) % //td/tr/AlternatingItemTemplateEditItemTemplatetr styletdasp:Button IDUpdateButton runatserver CommandNameUpdate Text更新 /asp:Button IDCancelButton runatserver CommandNameCancel Text取消 //tdtdasp:Label IDidLabel1 runatserver Text%# Eval(id) % //tdtdasp:TextBox IDnameTextBox runatserver Text%# Bind(name) % //tdtdasp:TextBox IDageTextBox runatserver Text%# Bind(age) % //td/tr/EditItemTemplateEmptyDataTemplatetable runatserver styletrtd未返回数据。/td/tr/table/EmptyDataTemplateInsertItemTemplatetr styletdasp:Button IDInsertButton runatserver CommandNameInsert Text插入 /asp:Button IDCancelButton runatserver CommandNameCancel Text清除 //tdtdnbsp;/tdtdasp:TextBox IDnameTextBox runatserver Text%# Bind(name) % //tdtdasp:TextBox IDageTextBox runatserver Text%# Bind(age) % //td/tr/InsertItemTemplateItemTemplatetr styletdasp:Button IDDeleteButton runatserver CommandNameDelete Text删除 /asp:Button IDEditButton runatserver CommandNameEdit Text编辑 //tdtdasp:Label IDidLabel runatserver Text%# Eval(id) % //tdtdasp:Label IDnameLabel runatserver Text%# Eval(name) % //tdtdasp:Label IDageLabel runatserver Text%# Eval(age) % //td/tr/ItemTemplateLayoutTemplatetable runatservertr runatservertd runatservertable IDitemPlaceholderContainer runatserver border0 styletr runatserver styleth runatserver/thth runatserverid/thth runatservername/thth runatserverage/th/trtr IDitemPlaceholder runatserver/tr/table/td/trtr runatservertd runatserver styleasp:DataPager IDDataPager1 runatserver QueryStringFieldpagenumFieldsasp:NumericPagerField //Fields/asp:DataPager/td/tr/table/LayoutTemplateSelectedItemTemplatetr styletdasp:Button IDDeleteButton runatserver CommandNameDelete Text删除 /asp:Button IDEditButton runatserver CommandNameEdit Text编辑 //tdtdasp:Label IDidLabel runatserver Text%# Eval(id) % //tdtdasp:Label IDnameLabel runatserver Text%# Eval(name) % //tdtdasp:Label IDageLabel runatserver Text%# Eval(age) % //td/tr/SelectedItemTemplate/asp:ListViewasp:Button IDButton1 runatserver onclickButton1_Click TextButton //div/form
/body
/html   5.生成解决方案后运行你会发现可以正常分页了但会发现不论是第一页还是第4页时地址栏都是没有变化的当你想把第3页的连接给一个朋友看时会发现当打开这个连接时显示的还是第一页。 我们可以在  DataPager的属性中设置QueryStringField值为pagenum。这样你再运行点击第一页的连接时会在地址栏中显示?pagenum...这样的数据当你要把第三页的内容给朋友时只要地址栏中有pagenum这样的字样就可以直接查看第3页的数据了。转载于:https://www.cnblogs.com/yagzh2000/p/3169797.html