请问大家,DataList与Repeater 如何实现分页?

问题描述

请问大家,DataList与Repeater如何实现分页?

解决方案

解决方案二:
用pagedatasource,如果有需要,我把源代码给你其实你也可以看一下这个http://www.lokcore.com/avrilxu/article.asp?id=5repeater的详解
解决方案三:
谢谢
解决方案四:
可以试用pagedatasource这个类,提供了分页的功能,不过数据量太大的话效率不是很高。我的一个例子楼主可以看一下:publicpartialclassRepeterExcerise:System.Web.UI.Page{stringConStr=ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;SqlConnectionCon;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){//设置默认的排序顺序ViewState["CompanyName"]="SupplierID";ViewState["Direction"]="ASC";ViewState["LineNo"]=0;//初始化的时候默认显示第一页lblCount.Text="1";BindRepeter();}}//判断命令protectedvoidRepeater1_ItemCommand(objectsource,RepeaterCommandEventArgse){StringIndex=((Label)Repeater1.Items[e.Item.ItemIndex].FindControl("lblID")).Text;Session["ID"]=Index;//编辑模式if(e.CommandName=="Edit"){stringCompanyName=((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblCompanyName"))).Text;stringName=((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblName"))).Text;stringAddress=((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblAddress"))).Text;stringCity=((Label)(Repeater1.Items[e.Item.ItemIndex].FindControl("lblCity"))).Text;txtCompanyName.Text=CompanyName;txtContactName.Text=Name;txtAddress.Text=Address;txtCity.Text=City;if(Panel1.Visible==false){ShowMessage("进入编辑模式");}SetDisplayTrue();btnInsert.Visible=false;btnUpdate.Visible=true;Button1.Visible=true;}//删除elseif(e.CommandName=="Delete"){if(Panel1.Visible==true){ShowMessage("编辑模式下禁止删除");}else{SetDisplayFalse();stringDeleteStr="DELETEFROMSuppliersWHERESupplierID='"+Index+"'";Con=newSqlConnection(ConStr);SqlCommandDeleteCmd=newSqlCommand(DeleteStr,Con);try{Con.Open();DeleteCmd.ExecuteNonQuery();ShowMessage("删除成功");BindRepeter();}catch(Exceptionex){ShowMessage("删除有错误,请检查");}finally{Con.Dispose();}}}//新增elseif(e.CommandName=="New"){if(Panel1.Visible==true){ShowMessage("编辑模式下禁止添加新行");}else{SetDisplayTrue();ClearWord();btnInsert.Visible=true;btnUpdate.Visible=false;Button1.Visible=true;}}}//绑定RepeterprivatevoidBindRepeter(){stringQueryCon="SELECTSupplierID,CompanyName,ContactName,Address,CityFROMSuppliers";Con=newSqlConnection(ConStr);SqlDataAdapterNorthWindDa=newSqlDataAdapter(QueryCon,ConStr);DataSetDs=newDataSet();NorthWindDa.Fill(Ds,"Suppliers");//Repeater1.DataKeyNames=newstring[]{"SupplierID"};DataViewDv=Ds.Tables["Suppliers"].DefaultView;//排序表达式stringSortExpress=(string)ViewState["CompanyName"]+""+(string)ViewState["Direction"];Dv.Sort=SortExpress;//绑定数据源//Repeater1.DataSource=Ds.Tables["Suppliers"];//利用PagedDataSource进行分页PagedDataSourcePageDs=newPagedDataSource();PageDs.DataSource=Dv;PageDs.AllowPaging=true;PageDs.PageSize=10;intCurrentPage=Convert.ToInt32(lblCount.Text);//当前页PageDs.CurrentPageIndex=CurrentPage-1;btnPage.Enabled=true;Button2.Enabled=true;if(CurrentPage==1){Button2.Enabled=false;}if(CurrentPage==PageDs.PageCount){btnPage.Enabled=false;}//PageCount=PageDs.PageCount;lblPage.Text="共"+PageDs.PageCount+"页,当前在第";//将PageDs作为数据源进行绑定Repeater1.DataSource=PageDs;Repeater1.DataBind();}//显示编辑区域privatevoidSetDisplayTrue(){lblCompanyName.Visible=true;lblName.Visible=true;lblAddress.Visible=true;lblCity.Visible=true;txtCompanyName.Visible=true;txtContactName.Visible=true;txtAddress.Visible=true;txtCity.Visible=true;Panel1.Visible=true;}//隐藏编辑区域privatevoidSetDisplayFalse(){lblCompanyName.Visible=false;lblName.Visible=false;lblAddress.Visible=false;lblCity.Visible=false;txtCompanyName.Visible=false;txtContactName.Visible=false;txtAddress.Visible=false;txtCity.Visible=false;Panel1.Visible=false;}}

解决方案五:
privatevoidClearWord(){txtCompanyName.Text="";txtContactName.Text="";txtAddress.Text="";txtCity.Text="";}//封装javascriptprivatevoidShowMessage(stringMessage){LiteralTxtMsg=newLiteral();TxtMsg.Text="<script>alert('"+Message+"')</script>";Page.Controls.Add(TxtMsg);}//更新数据protectedvoidbtnUpdate_Click(objectsender,EventArgse){/*在有数据输入的时候应该检查输入数据的合法性,*过滤掉特殊的脚本,特殊的字符串,提高安全性*/stringCompanyName=Server.HtmlEncode(txtCompanyName.Text.ToString());stringContactName=Server.HtmlEncode(txtContactName.Text.ToString());stringAddress=Server.HtmlEncode(txtAddress.Text.ToString());stringCity=Server.HtmlEncode(txtCity.Text.ToString());stringUpdateStr="UPDATESuppliersSETCompanyName='"+CompanyName+"',ContactName='"+ContactName+"',"+"Address='"+Address+"',City='"+City+"'WHERESupplierID='"+Session["ID"]+"'";Con=newSqlConnection(ConStr);SqlCommandUpdateCmd=newSqlCommand(UpdateStr,Con);try{Con.Open();UpdateCmd.ExecuteNonQuery();ShowMessage("更新成功");SetDisplayFalse();BindRepeter();}catch(Exceptionex){ShowMessage("更新出错,请重新输入");}finally{Con.Dispose();}}protectedvoidButton1_Click(objectsender,EventArgse){SetDisplayFalse();}//插入一行新数据protectedvoidbtnInsert_Click(objectsender,EventArgse){stringCompanyName=Server.HtmlEncode(txtCompanyName.Text.ToString());stringContactName=Server.HtmlEncode(txtContactName.Text.ToString());stringAddress=Server.HtmlEncode(txtAddress.Text.ToString());stringCity=Server.HtmlEncode(txtCity.Text.ToString());stringInsertStr="INSERTINTOSuppliers(CompanyName,ContactName,Address,City)VALUES('"+CompanyName+"','"+ContactName+"','"+Address+"','"+City+"')";Con=newSqlConnection(ConStr);SqlCommandInsertCmd=newSqlCommand(InsertStr,Con);try{Con.Open();InsertCmd.ExecuteNonQuery();ShowMessage("插入成功");SetDisplayFalse();BindRepeter();}catch(Exceptionex){ShowMessage("插入失败,请重新检查");}finally{Con.Dispose();}}//给删除按钮添加客户端的Confirm对话框protectedvoidRepeater1_ItemDataBound(objectsender,RepeaterItemEventArgse){if(e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.Item){((Button)Repeater1.Controls[Repeater1.Controls.Count-1].FindControl("Delete")).Attributes["onclick"]="if(!confirm('你真的要删除这条记录么?'))returnfalse;";}//switch(e.Item.ItemType)//{//caseListItemType.AlternatingItem://((Label)Repeater1.Controls[Repeater1.Controls.Count-4].FindControl("lblID")).BackColor=Color.AliceBlue;//break;//caseListItemType.Item://((Label)Repeater1.Controls[Repeater1.Controls.Count-4].FindControl("lblID")).BackColor=Color.AliceBlue;//break;//}}/*privatevoidPageView(intIndex){if(Session["Dv"]!=null){PagedDataSourcePageSource=newPagedDataSource();PageSource.AllowPaging=true;PageSource.PageSize=10;PageSource.DataSource=((DataView)Session["Dv"]);PageSource.CurrentPageIndex=Index;//lblCount.Text="共"+PageSource.PageCount+"页,当前第"+(PageSource.CurrentPageIndex+1)+"页";Repeater1.DataSource=PageSource;Repeater1.DataBind();}}*///下一页protectedvoidbtnPage_Click(objectsender,EventArgse){//更改pageds的当前页数lblCount.Text=Convert.ToString(Convert.ToInt32(lblCount.Text)+1);BindRepeter();}//上一页protectedvoidButton2_Click(objectsender,EventArgse){//更改当前页lblCount.Text=Convert.ToString(Convert.ToInt32(lblCount.Text)-1);BindRepeter();}//排序protectedvoidbtnSort_Click(objectsender,EventArgse){//判断排序表达式的顺序if(ViewState["Direction"].ToString()=="DESC"){ViewState["Direction"]="ASC";}else{ViewState["Direction"]="DESC";}/*设置完排序的顺序以后,将排序后的dataview*绑定到repeter上。这个方法,目前有个缺陷,*每次排序的时候都是将整个数据源进行排序,*并不是对当前的分页进行排序。*/BindRepeter();}

解决方案六:
mark
解决方案七:
Repeater自定义分页首页上一页下一页尾页<scriptrunat="server">errorsers=newerrors();protectedvoidPage_Load(objectsender,EventArgse){DataSetds=null;if(Cache["Repeater"]!=null){ds=(DataSet)Cache["Repeater"];}else{Cache.Insert("Repeater",(DataSet)CreateCache());ds=(DataSet)Cache["Repeater"];}PageBind(ds);}privateDataSetCreateCache(){errorser=newerrors();DataSetds=er.GetErrors();returnds;}protectedvoidrepErrors_ItemDataBound(objectsender,RepeaterItemEventArgse){if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){HtmlInputHiddenhi=(HtmlInputHidden)e.Item.FindControl("Hidden1");Repeaterrep=(Repeater)e.Item.FindControl("repErrorinfo");rep.DataSource=ers.GetErrorInfo(Int32.Parse(hi.Value));rep.DataBind();}}privatevoidPageBind(DataSetds){PagedDataSourceobjps=newPagedDataSource();objps.DataSource=ds.Tables[0].DefaultView;objps.AllowPaging=true;objps.PageSize=2;intCurPage;if(Request.QueryString["Page"]!=null){CurPage=Int32.Parse(Request.QueryString["Page"].ToString());}else{CurPage=1;}objps.CurrentPageIndex=CurPage-1;Label1.Text=objps.PageCount.ToString();Label2.Text=CurPage.ToString();LinkButton1.PostBackUrl=Request.CurrentExecutionFilePath+"?Page=1";if(!objps.IsFirstPage)LinkButton2.PostBackUrl=Request.CurrentExecutionFilePath+"?Page="+(CurPage-1);if(!objps.IsLastPage)LinkButton3.PostBackUrl=Request.CurrentExecutionFilePath+"?Page="+(CurPage+1);LinkButton4.PostBackUrl=Request.CurrentExecutionFilePath+"?Page="+objps.PageCount.ToString();repErrors.DataSource=objps;repErrors.DataBind();}protectedvoidButton1_Click(objectsender,EventArgse){DataSetds=null;if(Cache["Repeater"]!=null){ds=(DataSet)Cache["Repeater"];}PageBind(ds);}</script><divstyle="text-align:center"><divstyle="text-align:center"><divstyle="text-align:center"><table><tr><tdalign="left"><asp:RepeaterID="repErrors"runat=serverOnItemDataBound="repErrors_ItemDataBound"><HeaderTemplate><tableborder=1style="border-right:gray0pxsolid;border-top:gray0pxsolid;border-left:gray0pxsolid;border-bottom:gray0pxsolid"width=800px></HeaderTemplate><ItemTemplate><tr><td><inputid="Hidden1"type="hidden"value='<%#Eval("exNodeID")%>'runat=server/></td></tr><tr><tdalign=left><imgsrc="images/xinxi.gif"/>&nbsp;&nbsp;<%#Eval("exDate","{0:yyyy年M月d日}")%></td></tr><tr><tdalign=left><asp:RepeaterID="repErrorinfo"runat=server><HeaderTemplate><table></HeaderTemplate><ItemTemplate><tr><tdalign=left><fontstyle="color:blue"><%#Eval("exMessage")%></font></td></tr><tr><tdalign=right><%#Eval("exDateTime")%>&nbsp;&nbsp;<asp:LinkButtonID="LinkButton1"runat="server"PostBackUrl='<%#"~/Default2.aspx?exid="+Eval("exID")%>'><fontstyle="color:Gray">详细信息</font></asp:LinkButton></td></tr></ItemTemplate><FooterTemplate></table></FooterTemplate></asp:Repeater></td></tr></ItemTemplate><FooterTemplate></table></FooterTemplate></asp:Repeater></td></tr><tr><tdalign="left">共<asp:LabelID="Label1"runat="server"></asp:Label>页,当前第<asp:LabelID="Label2"runat="server"></asp:Label>页,<asp:LinkButtonID="LinkButton1"runat="server">首页</asp:LinkButton><asp:LinkButtonID="LinkButton2"runat="server">上一页</asp:LinkButton><asp:LinkButtonID="LinkButton3"runat="server">下一页</asp:LinkButton><asp:LinkButtonID="LinkButton4"runat="server">尾页</asp:LinkButton><asp:TextBoxID="TextBox1"runat="server"Width="67px"></asp:TextBox><asp:ButtonID="Button1"runat="server"Text="[GO]"Width="40px"OnClick="Button1_Click"/></td></tr></table></div></div></div>
解决方案八:
mark
解决方案九:
pagedatasource
解决方案十:
呵呵,实现了,谢谢哦.

时间: 2024-09-27 00:59:38

请问大家,DataList与Repeater 如何实现分页?的相关文章

ASP.NET 2.0数据教程之四十四:DataList和Repeater数据分页

返回"ASP.NET 2.0数据教程目录" 导言 分页和排序是显示数据时经常用到的功能.比如,在一个在线书 店里搜索关于ASP.NET 的书的时候,可能结果会是成百上千,而每页只列出十条 .而且结果可以根据title(书名),price(价格),page count(页数), author name(作者)等来排序.我们在分页和排序报表数据 里已经讨论过, GridView, DetailsView, 和FormView 都有内置的分页功能,仅仅只需要勾一个 checkbox就可以开启

在ASP.NET 2.0中操作数据之四十一:DataList和Repeater数据分页_自学过程

导言 分页和排序是显示数据时经常用到的功能.比如,在一个在线书店里搜索关于ASP.NET 的书的时候,可能结果会是成百上千,而每页只列出十条.而且结果可以根据title(书名),price(价格),page count(页数),author name(作者)等来排序.我们在分页和排序报表数据 里已经讨论过, GridView, DetailsView, 和FormView 都有内置的分页功能,仅仅只需要勾一个checkbox就可以开启.GridView 还支持内置的排序. 不幸的是,DataLi

在ASP.NET 2.0中操作数据之四十三:DataList和Repeater数据排序(二)_自学过程

接着上篇介绍,上篇已经通过DropDownList简单实现了排序的功能,下面让我们看看带有分页的排序该怎么做. 第五步: 为使用默认分页的DataList添加排序的支持 打开PagingSortingDataListRepeater文件夹里的SortingWithDefaultPaging.aspx和Paging.aspx 页.在Paging.aspx 页里查看源文件.将图8里选择的文本复制下来,然后粘贴到SortingWithDefaultPaging.aspx 页里的<asp:Content

使用PagedDataSource类实现DataList和Repeater控件的分页显示

分页|控件|显示     Asp.net提供了三个功能强大的列表控件:DataGrid.DataList和Repeater控件,但其中只有DataGrid控件提供分页功能.相对DataGrid,DataList和Repeater控件具有更高的样式自定义性,所以很多时候我们喜欢使用DataList或Repeater控件来显示数据.  实现DataList或Repeater控件的分页显示有几种方法:  1.写一个方法或存储过程,根据传入的页数返回需要显示的数据表(DataTable)  2.使用Pa

关于何种情况下使用DataGrid、DataList或Repeater的一些讨论

datagrid [概述] WEB开发自从有了基于脚本的WEB编程技术(如ASP)以来,经历了一个漫长的过程.通过使用微软的ASP.Net技术,传统的ASP中大量的.单调乏味的.重复性的编程工作成为了历史.例如,象大多数ASP程序员所知的,在ASP中显示数据库内容所需要的过程: 建立数据库连接 用SQL查询装载ADO数据集 显示所需要的任何HTML代码 遍历数据集中的记录 输出记录字段值及相关的HTML 移向下一条记录 循环 显示所需要的HTML代码 又如,为了在表格中显示记录集的内容,我们需要

DataList控件也玩分页 (转自aspcn.com)

分页|控件 众所周知,ASP.Net中给我们提供了三个数据控件--DataGrid,Repeater,DataList.在这三个控件中,DataGrid控件的功能最强大,Repeater控件最忠实于模版原样,DataList控件则兼而有之. DataGrid控件太有名了,所以以前用的讲的也很多,Repeater功能太少,没有什么好讲的.这里主要是讲一讲DataList控件. DataList控件其实功能也很强大,他支持选择.编辑,实现的方法也很简单,不过最令人头疼的就是它不像DataGrid控件

Repeater控件分页的例子

分页|控件   Repeater和DataList控件提供了一个快速.灵活的表现数据的方式,但是,它们没有内建的分页功能:DataGrid控件提供了内建的分页功能,但它的结构比较复杂.下面就用PagedDataSource类实现Repeater和DataList的分页. PagedDataSource封装了DataGrid的分页属性,我们可以象DataGrid那样进行分页.代码如下:   <%@ Page Language="C#" %> <%@ import nam

ASP.NET 2.0数据教程之四十五:DataList和Repeater数据排序(一)

返回"ASP.NET 2.0数据教程目录" 导言 DataList和Repeater数据分页里我们学习了如何在DataList里添 加分页功能.我们在ProductsBLL类里创建了一个名为 GetProductsAsPagedDataSource的方法,它返回一个PagedDataSource对象.当绑 定到DataList或Repeater时,他们将只显示请求页的数据.这个技术和GridView ,DetailsView,FormView的内置分页功能原理差不多. 除了分页外, G

ASP.NET 2.0数据教程之二十九:用DataList和Repeater来显示数据

返回"ASP.NET 2.0数据教程目录" 导言 在之前的28篇教程的例子里,如果我们需要显示某个数据源的多条 记录,我们使用GridView .GridView 的一行表示数据源的一条记录,列表示一个字 段.虽然GridView 用来显示数据,分页,排序,编辑,删除非常的方便,但是有点臃肿 .而且GridView 结构的标记是固定的-它包含一个带有<tr>和 <td>的HTML <table>标记. 为了在显示多条记录时,有更好的 自定义功能,AS