如何实现GridView的手动分页我们可以这样做。
先要在Html界面中GridView中增加AllowPaging="True"接着做下面的//在page_load事件中将GridView绑定数据库protected void Page_Load(object sender, EventArgs e){string sqlstr=select * from TABLE;sqlconnection conn=new sqlconnection("数据库连接字串");DataSet mydataset = new DataSet();SqlDataAdapter myds = new SqlDataAdapter();myds.SelectCommand = new SqlCommand(sqlstr, conn);myds.Fill(mydataset);this.GridView1.DataSource = mydataset;mydataset.Dispose();myds.Dispose();conn.Close();conn.Dispose();GridView1.DataBind();}//GridView有一个PageIndexChanging事件protected void GridView1_PageIndexChanging(object sender, GridViewPag eEventArgs e){GridView1.PageIndex = e.NewPageIndex;GridView1.DataBind();}这样就可以实现啦!要使用手动分页前提是GridView没有使用数据源控件(sqldatasource.....)的时候。
请教GridView的手动分页如何实现?谢谢!请教GridView的手动分页(自定义分页)如何实现?比如已知有10000条数据,我要GridView的分页功能来显示数据,但是自动分页功能需要每次都取出全部的10000条数据,这样效率不高,所以就要求只用设置GridView的分页数如1000页(每页10知),当选择第n页时才从数据库中取出对应的数据,请问怎样实现?谢谢!结合存储过程写的通用搜索分页程序存储过程改自bigeagle的论坛分页程序。
请大家批判!:)select.aspx--------------------------------------------------------------------------------<%@ Page Language="C#" %><%@ import Namespace="System.Data" %><%@ import Namespace="System.Data.SqlClient" %><script runat="server">protected void Page_Load(Object sender, EventArgs e){int intPageNo,intPageSize,intPageCount;intPageSize = 25;if (Request["CurrentPage"]==null){intPageNo = 1;}else{intPageNo = Int32.Parse(Request["CurrentPage"]); }SqlConnection mySqlConnection = newSqlConnection("server=(local);Database=test;user id=sa;password=");SqlCommand mySqlCommand = new SqlCommand("up_GetTopicList", mySqlConnection);mandType = CommandType.StoredProcedure; SqlParameter workParm;//搜索表字段,以","号分隔workParm = mySqlCommand.Parameters.Add("@a_TableList", SqlDbType.VarChar, 200);mySqlCommand.Parameters["@a_TableList"].Value = "OFFERID,type,offertime";//搜索表名workParm = mySqlCommand.Parameters.Add("@a_TableName", SqlDbType.VarChar, 30);mySqlCommand.Parameters["@a_TableName"].Value = "offer"; //搜索条件,如"select * from aa where a=1 and b=2 and c=3"则条件为"where a=1 and b=2 and c=3"workParm = mySqlCommand.Parameters.Add("@a_SelectWhere", SqlDbType.VarChar, 500);mySqlCommand.Parameters["@a_SelectWhere"].Value = "where type='idl'";//表主键字段名,必须为INT类型workParm = mySqlCommand.Parameters.Add("@a_SelectOrderId", SqlDbType.VarChar, 50);mySqlCommand.Parameters["@a_SelectOrderId"].Value = "offerid";//排序,可以使用多字段排序但主键字段必需在最前面workParm = mySqlCommand.Parameters.Add("@a_SelectOrder", SqlDbType.VarChar, 50);mySqlCommand.Parameters["@a_SelectOrder"].Value = "order by offerid desc";//页号workParm = mySqlCommand.Parameters.Add("@a_intPageNo", SqlDbType.Int);mySqlCommand.Parameters["@a_intPageNo"].Value = intPageNo;//每页显示数workParm = mySqlCommand.Parameters.Add("@a_intPageSize", SqlDbType.Int);mySqlCommand.Parameters["@a_intPageSize"].Value = intPageSize;//总记录数(存储过程输出参数)workParm = mySqlCommand.Parameters.Add("@RecordCount", SqlDbType.Int);workParm.Direction =ParameterDirection.Output;//当前页记录数(存储过程返回值)workParm = mySqlCommand.Parameters.Add("RowCount", SqlDbType.Int);workParm.Direction = ParameterDirection.ReturnValue;mySqlConnection.Open();Repeater.DataSource =mySqlCommand.ExecuteReader();Repeater.DataBind();mySqlConnection.Close();Int32 RecordCount =(Int32)mySqlCommand.Parameters["@RecordCount"].Value;Int32 RowCount =(Int32)mySqlCommand.Parameters["RowCount"].Value;LabelRecord.Text = RecordCount.ToString();LabelRow.Text = intPageNo.ToString();intPageCount = RecordCount/intPageSize;if ((RecordCount%intPageSize)>0)intPageCount += 1;LabelPage.Text = intPageCount.ToString();if (intPageNo>1){HLFistPage.NavigateUrl ="select.aspx?CurrentPage=1";HLPrevPage.NavigateUrl =String.Concat("select.aspx?CurrentPage=","",intPageNo-1); }else{HLFistPage.NavigateUrl = "";HLPrevPage.NavigateUrl = "";//HLFistPage.Enabled = false;//HLPrevPage.Enabled = false;}if (intPageNo<intPageCount){HLNextPage.NavigateUrl =String.Concat("select.aspx?CurrentPage=","",intPageNo+1); HLEndPage.NavigateUrl =String.Concat("select.aspx?CurrentPage=","",intPageCount); }else{HLNextPage.NavigateUrl = "";HLEndPage.NavigateUrl = "";//HLNextPage.Enabled=false;//HLEndPage.Enabled=false;}}</script><html><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <head><link href="/style.css" rel="stylesheet" /><style type="text/css">.high { font-family: "宋体"; font-size: 9pt; line-height: 140%}.mid { font-size: 9pt; line-height: 12pt}.small { font-size: 9pt; line-height: normal}.TP10_5 {font-size: 14px;line-height: 140%;}</style><style type="text/css">A:link {COLOR: #cc6666}</style></head><body><form runat="server"><span class="high"> 第<font color="#CC0000"><asp:Labelid="LabelRow" runat="server"/></font>页 | 共有<asp:Labelid="LabelPage" runat="server"/>页| <asp:Label id="LabelRecord" runat="server"/>条信息 | <asp:HyperLink id="HLFistPage" Text="首页"runat="server"/>| <asp:HyperLink id="HLPrevPage" Text="上一页"runat="server"/>| <asp:HyperLink id="HLNextPage" Text="下一页"runat="server"/>| <asp:HyperLink id="HLEndPage" Text="尾页"runat="server"/></span><br><asp:Repeater id=Repeater runat="server"><HeaderTemplate><table width="583" border="0" cellspacing="0" cellpadding="0"> <tr><td bgcolor="#000000"><table width="100%" border="0"cellpadding="4" cellspacing="1" class="TP10_5"><tr bgcolor="#999999"><td align="center"> <strong><font color="#FFFFFF">订单号</font></strong></td><td align="center"> <strong><font color="#FFFFFF">服务项目</font></strong></td><td align="center"> <strong><font color="#FFFFFF">预订日期</font></strong></td><td align="center"> <strong><font color="#FFFFFF">操作人员</font></strong></td><td align="center"> <strong><font color="#FFFFFF">分配状态</font></strong></td><td> <div align="center"></div></td></tr></HeaderTemplate><ItemTemplate><tr align="center" bgcolor="#FFFFFF" class="small" onMouseOver='this.style.background="#CCCCCC"'onMouseOut='this.style.background="#FFFFFF"'><td><%# DataBinder.Eval(Container.DataItem, "offerid") %></td><td><%# DataBinder.Eval(Container.DataItem, "type") %></td><td><%# DataBinder.Eval(Container.DataItem, "offertime") %></td><td> </td><td> </td><td><ahref="javascript:void(window.open('info.asp?id=<%#DataBinder.Eval(Container.DataItem, "offerid") %>','订单分配','height=600,width=1000'))">订单详情</a></td></tr></ItemTemplate><FooterTemplate></table></td></tr></table></FooterTemplate></asp:Repeater></form></body></html>--------------------------------------------------------------------------------up_GetTopicList.sql--------------------------------------------------------------------------------CREATE proc up_GetTopicList@a_TableList Varchar(200),@a_TableName Varchar(30),@a_SelectWhere Varchar(500),@a_SelectOrderId Varchar(20),@a_SelectOrder Varchar(50),@a_intPageNo int,@a_intPageSize int,@RecordCount int OUTPUTas/*定义局部变量*/declare @intBeginID intdeclare @intEndID intdeclare @intRootRecordCount intdeclare @intRowCount intdeclare @TmpSelect NVarchar(600)/*关闭计数*/set nocount on/*求总共根贴数*/select @TmpSelect = 'set nocount on;select @SPintRootRecordCount = count(*) from '+@a_TableName+' '+@a_SelectWhereexecute sp_executesql@TmpSelect,N'@SPintRootRecordCount int OUTPUT',@SPintRootRecordCount=@intRootRecordCount OUTPUTselect @RecordCount = @intRootRecordCountif (@intRootRecordCount = 0) --如果没有贴子,则返回零return 0/*判断页数是否正确*/if (@a_intPageNo - 1) * @a_intPageSize > @intRootRecordCountreturn (-1)/*求开始rootID*/set @intRowCount = (@a_intPageNo - 1) * @a_intPageSize + 1/*限制条数*/select @TmpSelect = 'set nocount on;set rowcount@SPintRowCount;select @SPintBeginID = '+@a_SelectOrderId+' from'+@a_TableName+' '+@a_SelectWhere+' '+@a_SelectOrderexecute sp_executesql@TmpSelect,N'@SPintRowCount int,@SPintBeginID int OUTPUT',@SPintRowCount=@intRowCount,@SPintBeginID=@intBeginID OUTPUT/*结束rootID*/set @intRowCount = @a_intPageNo * @a_intPageSize/*限制条数*/select @TmpSelect = 'set nocount on;set rowcount@SPintRowCount;select @SPintEndID = '+@a_SelectOrderId+' from'+@a_TableName+' '+@a_SelectWhere+' '+@a_SelectOrderexecute sp_executesql@TmpSelect,N'@SPintRowCount int,@SPintEndID int OUTPUT',@SPintRowCount=@intRowCount,@SPintEndID=@intEndID OUTPUTif @a_SelectWhere='' or @a_SelectWhere IS NULLselect @TmpSelect = 'set nocount off;set rowcount 0;select'+@a_TableList+' from '+@a_TableName+' where '+@a_SelectOrderId+' between 'elseselect @TmpSelect = 'set nocount off;set rowcount 0;select'+@a_TableList+' from '+@a_TableName+' '+@a_SelectWhere+' and'+@a_SelectOrderId+' between 'if @intEndID > @intBeginIDselect @TmpSelect = @TmpSelect+'@SPintBeginID and @SPintEndID'+''+@a_SelectOrderelseselect @TmpSelect = @TmpSelect+'@SPintEndID and @SPintBeginID'+' '+@a_SelectOrderexecute sp_executesql@TmpSelect,N'@SPintEndID int,@SPintBeginID int',@SPintEndID=@intEndID,@SPintBeginID=@intBeginIDreturn(@@rowcount)--select @@rowcountGO。