如何实现GridView的手动分页
gridview实现分页

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class GridView_Page : System.Web.UI.Page
GridView1.PagerSettings.NextPageImageUrl = "img/next.gif";
GridView1.PagerSettings.PreviousPageImageUrl = "img/pre.gif";
GridView1.PagerSettings.FirstPageImageUrl = "img/first.gif";
如果是用代码实现,则需要这么做:
1、允许分页:设置AllowPaging=True;
2、设置GridView属性栏中PagerSetting里的一些属性中,定义分页的样式;
3、数据部署:将数据显示到GridView上;
4、加入相关事件:PageIndexChanged()、PageIndexChanging();
GridView分页的实现以及自定义分页样式功能实例

GridView分页的实现以及⾃定义分页样式功能实例GridView分页的实现复制代码代码如下:要在GridView中加⼊//实现分页AllowPaging="true"//⼀页数据10⾏PageSize="10"// 分页时触发的事件OnPageIndexChanging="gvwDesignationName_PageIndexChanging"在服务器事件⾥复制代码代码如下:protectedvoid gvwDesignationName_PageIndexChanging(object sender, GridViewPageEventArgs e){gvwDesignationName.PageIndex=e.newIndex;bingDesignatioonName();}这⾥我给出⼀个通⽤显⽰分页的模板(⽹上搜的,⾃⼰给出注释)复制代码代码如下:<PagerTemplate>当前第://((GridView)Container.NamingContainer)就是为了得到当前的控件<asp:Label ID="LabelCurrentPage" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"> </asp:Label>页/共://得到分页页⾯的总数<asp:Label ID="LabelPageCount" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageCount %>"></asp:Label>页//如果该分页是⾸分页,那么该连接就不会显⽰了.同时对应了⾃带识别的命令参数CommandArgument<asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page"Visible='<%#((GridView)Container.NamingContainer).PageIndex != 0 %>'>⾸页</asp:LinkButton><asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev"CommandName="Page" Visible='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'>上⼀页</asp:LinkButton>//如果该分页是尾页,那么该连接就不会显⽰了<asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page"Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>下⼀页</asp:LinkButton><asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page"Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>尾页</asp:LinkButton>转到第<asp:TextBox ID="txtNewPageIndex" runat="server" Width="20px" Text='<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>' />页//这⾥将CommandArgument即使点击该按钮e.newIndex 值为3<asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-2"CommandName="Page" Text="GO" /></PagerTemplate>对应该事件中代码为复制代码代码如下:protected void gvwDesignationName_PageIndexChanging(object sender, GridViewPageEventArgs e){// 得到该控件GridView theGrid = sender as GridView;int newPageIndex = 0;if (e.NewPageIndex==-3){//点击了Go按钮TextBox txtNewPageIndex = null;//GridView较DataGrid提供了更多的API,获取分页块可以使⽤BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRowGridViewRow pagerRow = theGrid.BottomPagerRow;if (pagerRow != null){//得到text控件txtNewPageIndex = pagerRow.FindControl("txtNewPageIndex") as TextBox;}if ( txtNewPageIndex!= null){//得到索引newPageIndex = int.Parse(txtNewPageIndex.Text) - 1;}}else{//点击了其他的按钮newPageIndex = e.NewPageIndex;}//防⽌新索引溢出newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;//得到新的值theGrid.PageIndex = newPageIndex;//重新绑定bingDesignatioonName();}。
gridview分页模型

gridview分页模型GridView的本身支持分页,一般情况下我们可以通过如下几个步骤实现分页:1、更改GrdView控件的AllowPaging属性为true;2、更改GrdView控件的PageSize属性为一个数值(默认为10);3、更改GrdView控件的PageSetting属性;4、为GridView添加事件:OnPageIndexChanging大多数情况下通过上边的步骤就可以实现GridView的分页了,当然很多代码需要你自己来写。
但是有时候我们需要自定义分页模板,还希望能通过更统一以及更少的代码来实现这个分页功能。
考虑到这些问题,我实现了一个通用的GridView分页模型,发布出来,仅供大家参考。
1、创建一个基础页面类BasePage,继承System.Web.UI.Page在这个基类中,创建几个通用的分页属性和方法,然后需要分页的页面都继承这个基类。
查看源代码打印?public class BasePage : System.Web.UI.Page{public BasePage(){}#region 分页相关属性和方法/// <summary>/// 总的记录数,目前仅用于自定义记录数/// </summary>protected int GridView_RecordCount = 0;/// <summary>/// 使用自定义的记录数/// 需要设置GridView_RecordCount/// 如果一次性绑定全部数据,不需要使用自定义,GridView可以通过DataSource自己获取/// </summary>protected bool IsUseCustomRecordCount = false;/// <summary>/// 实现GridView数据绑定的虚方法/// 在具体的页面类中重写这个方法,在PageTurn方法中就会调用重写的方法,以实现分页后的数据重新绑定/// </summary>protected virtual void GridView_DataBind(){}/// <summary>/// 分页页码跳转/// </summary>/// <param name="sender">跳转按钮</param>/// <param name="e"></param>protected void GridView_PageTurn(object sender, EventArgs e)System.Web.UI.WebControls.Button btnGoPage;System.Web.UI.WebControls.GridView GridView1;System.Web.UI.WebControls.TextBox txtGoPage;try{btnGoPage = (System.Web.UI.WebControls.Button)sender;GridView1 = (System.Web.UI.WebControls.GridView)btnGoPage.NamingCont ainer.Parent.Parent;txtGoPage = (System.Web.UI.WebControls.TextBox)GridView1.BottomPagerR ow.FindControl("txtGoPage");}catch{MessageBox.Show(this.Page, "页码输入框和跳转按钮都必须在GridView的分页模板中!");return;}int pageIndex = 1;bool goSuccess = false;if (!string.IsNullOrEmpty(txtGoPage.Text.Trim())){if (int.TryParse(txtGoPage.Text.Trim(), out pageIndex)){pageIndex--;if (pageIndex >= 0 && pageIndex < GridView1.PageCount) {goSuccess = true;GridView1.PageIndex = pageIndex;GridView_DataBind();}}}if (!goSuccess){MessageBox.Show(this.Page, "无效的页码!");return;}}/// <summary>/// 页码改变时触发/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView_PageIndexChanging(object sender, System.Web.UI.WebControls.GridViewPageEventArgs e) {System.Web.UI.WebControls.GridView GridView1 = sender as System.Web.UI.WebControls.GridView;GridView1.PageIndex = e.NewPageIndex;GridView_DataBind();/// <summary>/// GridView数据绑定完毕之后触发,显示记录数/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView_DataBound(object sender, EventArgs e){//获取当前GridViewSystem.Web.UI.WebControls.GridView GridView1 = sender as System.Web.UI.WebControls.GridView;if (GridView1.BottomPagerRow == null){return;}//总是显示分页行GridView1.BottomPagerRow.Visible = true;bel lblRecorCount = (bel)GridView1.BottomPagerRow. FindControl("lblRecorCount");if (IsUseCustomRecordCount){lblRecorCount.Text = GridView_RecordCount.ToString();}elseif (GridView1.DataSource == null){return;}//根据数据类型,动态获取绑定的数据源的记录数if (GridView1.DataSource.GetType() == typeof(DataView)){lblRecorCount.Text = ((DataView)GridView1.DataSource).Count.T oString();}else if(GridView1.DataSource.GetType() == typeof(DataTable)){lblRecorCount.Text = ((DataTable)GridView1.DataSource).Rows.Count.T oString();}else if (GridView1.DataSource.GetType() == typeof(DataSet)) {lblRecorCount.Text = ((DataSet)GridView1.DataSource).Tables[0].Rows.Count.T oString( );}else if (GridView1.DataSource is Array){lblRecorCount.Text = ((Array)GridView1.DataSource).Length.ToString();}else if(GridView1.DataSource.GetType() isSystem.Collections.IList){lblRecorCount.Text = ((System.Collections.IList)GridView1.DataSource).Count.ToString( );}else if(GridView1.DataSource.GetType() is System.Collections.ICollection){lblRecorCount.Text = ((System.Collections.ICollection)GridView1.DataSource).Count.To String();}else{TspOALog.Write("绑定到GridView的数据类型未知:"+ GridView1.DataSource.GetType());}}}#endregion}2、页面cs文件继承基类:BasePagepublic partial class NewsList: BasePage3、在页面添加一个GridView并设置相关属性查看源代码打印?<asp:GridView ID="GridView1"BorderStyle="Solid"BorderWidth="1px"BorderColor="#73B7EA"Width="100%"runat="server" AutoGenerateColumns="False"HorizontalAlign="Center"BackColor="White"CellPadding="4" GridLines="None"OnPageIndexChanging="GridView_PageInd exChanging"PageSize="10"AllowPaging="true"OnDataBound="GridView_DataBound"> <Columns>...</Columns><PagerTemplate><div style="text-align: center;"><span style="color: Blue">共有<asp:label id="lblRecorCount" runat="server"></asp:label>条记录第<asp:Label ID="lblcurPage"ForeColor="Blue"runat="server" Text='<%#((GridView)Container.Parent.Parent).PageIndex+1 %>'></asp:La bel>页/共<asp:Label ID="lblPageCount"ForeColor="blue" runat="server"Text='<%# ((GridView)Container.Parent.Parent).PageCount %>'></asp:Labe l>页</span><asp:LinkButton ID="cmdFirstPage"runat="server" CommandName="Page"CommandArgument="First"Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=0 %>">首页</asp:LinkButton><asp:LinkButton ID="cmdPreview"runat="server" CommandArgument="Prev"CommandName="Page"Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=0 %>">上一页</asp:LinkButton><asp:LinkButton ID="cmdNext"runat="server" CommandName="Page"CommandArgument="Next"Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=((GridView)Cont ainer.Parent.Parent).PageCount-1 %>">下一页</asp:LinkButton><asp:LinkButton ID="cmdLastPage"runat="server" CommandArgument="Last"CommandName="Page"Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=((GridView)Cont ainer.Parent.Parent).PageCount-1 %>">尾页</asp:LinkButton> 到<asp:TextBox ID="txtGoPage"runat="server"Text='<%# ((GridView)Container.Parent.Parent).PageIndex+1 %>' Width=" 30px" CssClass="simpletextbox"></asp:TextBox>页<asp:Button ID="Button3"runat="server" Width="40px"OnClick="GridView_PageTurn"Text="跳转" CssClass="simplebutton" /></div></PagerTemplate></asp:GridView>主要是:AllowPaging:允许GridView分页PageSize:默认10OnDataBound:绑定到基类的事件,用于显示总记录数OnPageIndexChanging:绑定到基类的事件,用于分页的数据处理PagerTemplate:包括记录数,当前页,总页数,首页,尾页,上一页,下一页,页码跳转其中页码跳转事件绑定到基类中的:GridView_PageTurn4、最后编写获取数据的方法重写基类的GridView_DataBind方法:其中查询数据,然后绑定到GridView。
winform中DataGridView实现分页功能

winform中DataGridView实现分页功能转载⾄以前都是做web开发,最近接触了下WinForm,发现WinForm分页控件好像都没有,⽹上搜索了⼀下,发现有很多⽹友写的分页控件,分页效果应该都能实现吧,只是其风格都不是很符合我想要的。
做web的时候,我习惯了Extjs的Grid分页效果,所以也想在WinForm中做个类似的效果,所以咬咬⽛,做个⼭寨版本的吧,虽然⾃⼰写费时费⼒,在项⽬进度考虑中不是很可取,但是还是特别想⼭寨⼀回,做⾃⼰喜欢的风格。
按照惯例,还是先看看实现效果图吧(有图有真像,才好继续下⽂呀)应⽤效果:(效果有点难看,因为我是刚装的xp系统,还是经典主题,如果换成Win7系统或其他主题,效果还是会很不错的)我们要做的就是上图显⽰的⼀个⾃定义控件,这个效果参考⾃我做web开发使⽤的Extjs之Grid的分页效果(如下图)Extjs的动画效果我们暂时就不实现了,这⾥只做个外观看起来想像即可,完全⼀样就脱离“⼭寨”概念了,总要⽐⼈家差点吧,谁让咱是模仿呢!⾔归正传,我们现在就看看具体怎么实现吧:第⼀步:先布局注:我们创建的是⽤户⾃定义控件,⽽不是WinForm窗体就是先做出个显⽰效果,这个布局很简单,在这就不多说,重点就是“⾸页、前⼀页、后⼀页、末页”图标,每个图标分两种,⼀是能点击的⾼亮效果,⼀个是灰⾊不不能点击。
以下是套图:(⼤家如果不喜欢,可以去做成⾃⼰喜欢的风格图⽚)第⼆步:编写分页代码布局好了,那么第⼆步我们就要代码实现正确显⽰⽂字信息,分页事件,每页条数选择事件,公开属性和事件。
以下是完整代码:1///<summary>2///声明委托3///</summary>4///<param name="e"></param>5public delegate void EventPagingHandler (EventArgs e);6public partial class Paging : UserControl7 {8public Paging()9 {10 InitializeComponent();11 }12public event EventPagingHandler EventPaging;13#region公开属性14private int _pageSize = 50;15///<summary>16///每页显⽰记录数(默认50)17///</summary>18public int PageSize19 {20get21 {22return _pageSize;23 }24set25 {26if (value > 0)27 {28 _pageSize = value;29 }30else31 {32 _pageSize = 50;33 }boPageSize.Text = _pageSize.ToString();35 }36 }37private int _currentPage = 1;38///<summary>39///当前页40///</summary>41public int CurrentPage42 {43get44 {45return _currentPage;46 }47set48 {49if (value > 0)50 {51 _currentPage = value;52 }53else54 {55 _currentPage = 1;56 }5758 }59 }60private int _totalCount = 0;61///<summary>62///总记录数63///</summary>64public int TotalCount65 {66get67 {68return _totalCount;69 }70set71 {72if (value >= 0)73 {74 _totalCount = value;75 }76else77 {78 _totalCount = 0;79 }80this.lblTotalCount.Text = this._totalCount.ToString();81 CalculatePageCount();82this.lblRecordRegion.Text = GetRecordRegion();83 }84 }8586private int _pageCount = 0;87///<summary>88///页数89///</summary>90public int PageCount91 {92get93 {94return _pageCount;95 }96set97 {98if (value >= 0)99 {100 _pageCount = value;101 }102else103 {104 _pageCount = 0;105 }106this.lblPageCount.Text = _pageCount + "";107 }108 }109#endregion110111///<summary>112///计算页数113///</summary>114private void CalculatePageCount()115 {116if (this.TotalCount > 0)117 {118this.PageCount = Convert.ToInt32 (Math.Ceiling (Convert.ToDouble (this.TotalCount) / Convert.ToDouble (this.PageSize) ) ); 119 }120else121 {122this.PageCount = 0;123 }124 }125126///<summary>127///获取显⽰记录区间(格式如:1-50)128///</summary>129///<returns></returns>130private string GetRecordRegion()131 {132if (this.PageCount == 1) //只有⼀页133 {134return"1-" + this.TotalCount.ToString();135 }136else//有多页137 {138if (this.CurrentPage == 1) //当前显⽰为第⼀页139 {140return"1-" + this.PageSize;141 }142else if (this.CurrentPage == this.PageCount) //当前显⽰为最后⼀页143 {144return ( (this.CurrentPage - 1) * this.PageSize + 1) + "-" + this.TotalCount;145 }146else//中间页147 {148return ( (this.CurrentPage - 1) * this.PageSize + 1) + "-" + this.CurrentPage * this.PageSize;149 }150 }151 }152153///<summary>154///数据绑定155///</summary>156public void Bind()157 {158if (this.EventPaging != null)159 {160this.EventPaging (new EventArgs() );161 }162if (this.CurrentPage > this.PageCount)163 {164this.CurrentPage = this.PageCount;165 }166this.txtBoxCurPage.Text = this.CurrentPage + "";167this.lblTotalCount.Text = this.TotalCount + "";168this.lblPageCount.Text = this.PageCount + "";169this.lblRecordRegion.Text = GetRecordRegion();170if (this.CurrentPage == 1)171 {172this.btnFirst.Enabled = false;173this.btnPrev.Enabled = false;174this.btnFirst.Image = global::CHVM.Properties.Resources.page_first_disabled; 175this.btnPrev.Image = global::CHVM.Properties.Resources.page_prev_disabled; 176 }177else178 {179this.btnFirst.Enabled = true;180this.btnPrev.Enabled = true;181this.btnFirst.Image = global::CHVM.Properties.Resources.page_first;182this.btnPrev.Image = global::CHVM.Properties.Resources.page_prev;183 }184if (this.CurrentPage == this.PageCount)185 {186this.btnNext.Enabled = false;187this.btnLast.Enabled = false;188this.btnNext.Image = global::CHVM.Properties.Resources.page_next_disabled; 189this.btnLast.Image = global::CHVM.Properties.Resources.page_last_disabled; 190 }191else192 {193this.btnNext.Enabled = true;194this.btnLast.Enabled = true;195this.btnNext.Image = global::CHVM.Properties.Resources.page_next;196this.btnLast.Image = global::CHVM.Properties.Resources.page_last;197 }198if (this.TotalCount == 0)199 {200this.btnFirst.Enabled = false;201this.btnPrev.Enabled = false;202this.btnNext.Enabled = false;203this.btnLast.Enabled = false;204this.btnFirst.Image = global::CHVM.Properties.Resources.page_first_disabled; 205this.btnPrev.Image = global::CHVM.Properties.Resources.page_prev_disabled; 206this.btnNext.Image = global::CHVM.Properties.Resources.page_next_disabled; 207this.btnLast.Image = global::CHVM.Properties.Resources.page_last_disabled; 208 }209 }210211private void btnFirst_Click (object sender, EventArgs e)212 {213this.CurrentPage = 1;214this.Bind();215 }216217private void btnPrev_Click (object sender, EventArgs e)218 {219this.CurrentPage -= 1;220this.Bind();221 }222223private void btnNext_Click (object sender, EventArgs e)224 {225this.CurrentPage += 1;226this.Bind();227 }228229private void btnLast_Click (object sender, EventArgs e)230 {231this.CurrentPage = this.PageCount;232this.Bind();233 }234235///<summary>236///改变每页条数237///</summary>238///<param name="sender"></param>239///<param name="e"></param>240private void comboPageSize_SelectedIndexChanged (object sender, EventArgs e) 241 {242this.PageSize = Convert.ToInt32 (comboPageSize.Text);243this.Bind();244 }245 }246247这⾥重点提两点:⼀是图⽚切换:248this.btnFirst.Image = global::CHVM.Properties.Resources.page_first_disabled;249 Image对象是在Properties.Resource.resx中⾃动⽣成的,代码如下:250internal static System.Drawing.Bitmap page_first251 {252get {253object obj = ResourceManager.GetObject ("page-first", resourceCulture);254return ( (System.Drawing.Bitmap) (obj) );255 }256 }257258internal static System.Drawing.Bitmap page_first_disabled259 {260get {261object obj = ResourceManager.GetObject ("page_first_disabled", resourceCulture);262return ( (System.Drawing.Bitmap) (obj) );263 }264 }265⼆是应⽤了委托事件:我们在这定义了⼀个分页事件266public event EventPagingHandler EventPaging;267在数据绑定⽅法中实现它:268///<summary>269///数据绑定270///</summary>271public void Bind()272 {273if (this.EventPaging != null)274 {275this.EventPaging (new EventArgs() );276 }277//… 以下省略278 }279这⾥需要⼤家对C#的委托和事件有⼀定的了解,不清楚的可以直接使⽤,或者先去查阅相关参考资料,这⾥我们就不谈委托机制了。
如何实现GridView的手动分页

如何实现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的论坛分页程序。
winform中DataGridView实现分页功能

winform中DataGridView实现分页功能在winform的设计中,要实现对DataGridView控件的分页功能,需要两个控件:BindingSource、BindingNavigator,根据需求可对BindingNavigator进行自由的扩展,下图的示例则是根据一般需求对分页功能的实现。
红色区域是对BindingNavigator控件扩展后的效果。
具体实现过程://窗体构造方法中定义分页所需变量:int pageSize = 0; //每页显示行数int nMax = 0; //总记录数int pageCount = 0; //页数=总记录数/每页显示行数int pageCurrent = 0; //当前页号int nCurrent = 0; //当前记录行DataTable dtInfo = new DataTable(); //存取查询数据结果//分页功能实现public void InitDataSet(){//判断每页显示记录数是否为空,在初始话窗体时为真if (txtRecordNumOfPage.Text.Trim() == ""){try{//pageSize =Convert.ToInt16(ConfigurationManager.AppSettings["PageSize"]); //设置页面行数//读取配置文件中设置的每页显示条数string szConfigFileName = Application.ExecutablePath + ".config"; XmlDocument doc = new XmlDocument();doc.Load(szConfigFileName);XmlNode root = doc.SelectSingleNode("configuration");XmlNode node =root.SelectSingleNode("appSettings/add[@key='PageSize']");XmlElement el = node as XmlElement;pageSize = Convert.ToUInt16(el.GetAttribute("value"));}catch{}if (pageSize == 0){pageSize = 20; //如果读取配置文件失败,则默认将每页显示条数设置为20}txtRecordNumOfPage.Text = pageSize.ToString(); //界面显示的“每页记录数”赋值}else{//读取界面设置的每页显示条数pageSize = Convert.ToUInt16(txtRecordNumOfPage.Text.Trim());}//总记录数赋值nMax = dtInfo.Rows.Count;pageCount = (nMax / pageSize); //采用整除计算页数//判断整除后是否有余数,有则对页数进行+1if ((nMax % pageSize) > 0) pageCount++;pageCurrent = 1; //当前页数从1开始nCurrent = 0; //当前记录数从0开始//调用显示数据方法LoadData();}//显示数据方法private void LoadData(){int nStartPos = 0; //当前页面开始记录行int nEndPos = 0; //当前页面结束记录行//判断查询结果是否为空if (dtInfo.Rows.Count == 0){dgvExperInfo.DataSource = null;return;}else{DataTable dtTemp = dtInfo.Clone(); //克隆DataTable结构,即将字段名称进行复制if (pageCurrent == 1){bindingNavigatorMoveFirstPage.Enabled = false;bindingNavigatorMovePreviousPage.Enabled = false;}else{bindingNavigatorMoveFirstPage.Enabled = true;bindingNavigatorMovePreviousPage.Enabled = true;}if (pageCurrent == pageCount){nEndPos = nMax;bindingNavigatorMoveLastPage.Enabled = false;bindingNavigatorMoveNextPage.Enabled = false;}else{bindingNavigatorMoveLastPage.Enabled = true;bindingNavigatorMoveNextPage.Enabled = true;nEndPos = pageSize * pageCurrent;}nStartPos = nCurrent;lblPageCount.Text = pageCount.ToString(); //界面显示总页数 lblCurrentPage.Text = Convert.ToString(pageCurrent);//当前页数txtCurrentPage.Text = Convert.ToString(pageCurrent);//跳转到页数的显示//从元数据源复制记录行for (int i = nStartPos; i < nEndPos; i++){dtTemp.ImportRow(dtInfo.Rows[i]);nCurrent++;}bdsInfo.DataSource = dtTemp;bdnInfo.BindingSource = bdsInfo;dgvExperInfo.DataSource = bdsInfo;dgvExperInfo.ClearSelection();}}//BindingNavigator控件上的项目点击事件,通过配置各个Item的Text值进行判断执行private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e){if (e.ClickedItem.Text == "上一页"){pageCurrent--;if (pageCurrent <= 0){MessageBox.Show("已经是第一页,请点击“下一页”查看!");pageCurrent++;return;}else{nCurrent = pageSize * (pageCurrent - 1);}LoadData();}if (e.ClickedItem.Text == "下一页"){pageCurrent++;if (pageCurrent > pageCount){MessageBox.Show("已经是最后一页,请点击“上一页”查看!"); pageCurrent--;return;}else{nCurrent=pageSize*(pageCurrent-1);}LoadData();}if (e.ClickedItem.Text == "首页"){pageCurrent = 1;nCurrent = 0;LoadData();}if (e.ClickedItem.Text == "尾页"){pageCurrent = pageCount;nCurrent = pageSize * (pageCurrent - 1);LoadData();}}//跳转页实现private void btnPage_Click(object sender, EventArgs e){if (txtCurrentPage.Text.Trim() != ""){pageCurrent = Convert.ToInt16(txtCurrentPage.Text.Trim());//若输入页号大于最大显示页号,则跳转至最大页if (pageCurrent > pageCount){pageCurrent = pageCount;nCurrent = pageSize * (pageCurrent - 1);}//若输入页号小于1,则跳转至第一页else if (pageCurrent < 1){pageCurrent = 1;nCurrent = 0;LoadData();}//跳转至输入页号else{nCurrent = pageSize * (pageCurrent - 1); //当前行数定位 }//调用加载数据方法LoadData();}}private void txtCurrentPage_TextChanged(object sender, EventArgs e){bool IsNum = true;foreach (char c in txtCurrentPage.Text.Trim()){if (!char.IsNumber(c)) { IsNum = false; break; }}if (IsNum == false){txtCurrentPage.Text = pageCurrent.ToString();}}//当前页回车事件调用跳转页的操作private void txtCurrentPage_KeyPress(object sender, KeyPressEventArgs e) {if (e.KeyChar == 13){btnPage_Click(sender,e);}}//每页显示记录数变更事件private void txtRecordNumOfPage_TextChanged(object sender, EventArgs e) {bool IsNum = true;foreach (char c in txtRecordNumOfPage.Text.Trim()){if (!char.IsNumber(c)) { IsNum = false; break; }}if (IsNum == false){txtRecordNumOfPage.Text = pageSize.ToString();}//判断输入的每页显示条数是否为空或是否为0,输入长度是否大于4位等情况if (txtRecordNumOfPage.Text.Trim() == "" ||Convert.ToUInt32(txtRecordNumOfPage.Text.Trim()) == 0 ||txtRecordNumOfPage.Text.Trim().Length > 4){txtRecordNumOfPage.Text = pageSize.ToString();}//规避了特殊情况后直接调用显示数据方法LoadDocInfoToDGV();}至此,winform中对DataGridView控件的分页功能已经实现,该方法是在网上查了相关资料后参照一些常用的分页效果进行了一些扩展,也在组长的要求下,完善了一些细节上的工作:由于屏幕分辨率的不同,用户可自行对每页显示条数进行设置,设置结果可以在关闭窗体的事件中保存至配置文件,下次进行默认读取;对分页控件中按钮操作的优化,判断是否能够使用的功能,代码中已经进行了体现;另外由于显示器分辨率不尽相同,需要在窗体加载时,设置控件显示的位置,也同样需要代码进行控制。
MicrosoftVisualStudio2005中GridView手动分页,自定义分页(精)

1.创建存储过程,数据库为Microsoft SQL Server 2000,use Northwindgoselect * from Ordersgoif exists(select * from sysobjects where name='proc_ordersinfo' and type='P')drop procedure proc_ordersinfogo--创建查询表Orders的存储过程,@PageIndex 页面索引(页面索引=当前页数-1),@PageSize 每页显示数据的多少(多少行)--@PageCount 页面总数,@RecordCount 表中的记录总数create procedure proc_ordersinfo@PageIndex int,@PageSize int,@PageCount int outasdeclare @RecordCount int,@strsql nvarchar(1000)select @RecordCount=count(*) from ordersset @PageCount=ceiling(@RecordCount*1.0/@PageSize)--第1种情况,表只够分成一页if @PageIndex=0 or @PageCount<=1set @strsql=N'select top'+str(@PageSize)+'* from Orders order by OrderID desc' --第2种情况,要查询表的最后一页(可看作表Orders已被分成几个页了)else if @PageIndex=@PageCount-1set @strsql=N'select * from(selecttop'+str(@RecordCount-@PageIndex*@PageSize)+'* from Orders order by OrderID asc) TempTable order by OrderID desc'--第3种情况,查询非表的最后一页elseset @strsql=N'select top'+str(@PageSize)+'* from(selecttop'+str(@RecordCount-@PageIndex*@PageSize)+'* from Orders order by OrderID asc) TempTable order by OrderID desc'--执行SQL语句exec (@strsql)go2.创建显示数据的方法class CConnDB里的方法returnConn()返回数据库连接using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;//导入需要使用的命名空间using System.Data.SqlClient;/// <summary>/// CConnDB 的摘要说明/// </summary>public class CConnDB{public CConnDB(){//// TODO: 在此处添加构造函数逻辑//}public SqlConnection returnConn() {SqlConnection sconn = newSqlConnection("server=.;database=Northwind;uid=sa;pwd=sa");return sconn;}}class CDisplayOdersInfo里的方法DisplayOrdersInfo()返回一个DataSetusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;//导入需要使用的命名空间using System.Data.SqlClient;/// <summary>/// CDisplayOdersInfo 的摘要说明/// </summary>public class CDisplayOdersInfo{CConnDB ccdb = new CConnDB();//pageCount为页面总数private int pageCount;public CDisplayOdersInfo(){//// TODO: 在此处添加构造函数逻辑//}public DataSet DisplayOrdersInfo(int pageIndex,int pageSize) {SqlConnection sconn = ccdb.returnConn();SqlCommand scmd = new SqlCommand("proc_ordersinfo",sconn);scmd.Parameters.Add(new SqlParameter("@PageIndex",SqlDbType.Int));scmd.Parameters[0].Value = pageIndex;scmd.Parameters.Add(new SqlParameter("@PageSize",SqlDbType.Int));scmd.Parameters[1].Value = pageSize;scmd.Parameters.Add(new SqlParameter("@PageCount",SqlDbType.Int));scmd.Parameters[2].Direction = ParameterDirection.Output;mandType = CommandType.StoredProcedure;SqlDataAdapter sda = new SqlDataAdapter(scmd);DataSet ds = new DataSet();sda.Fill(ds);pageCount = (int)scmd.Parameters[2].Value;return ds;}public int returnPageCount() {return pageCount;}}3.页面设计和页面代码页面设计<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" ><head runat="server"><title>无标题页</title></head><body><form id="form1" runat="server"><div> <asp:LinkButton ID="lbPrev" runat="server"OnClick="lbPrev_Click">上一页</asp:LinkButton><asp:Label ID="lblPageNum" runat="server"></asp:Label><asp:LinkButton ID="lbNext" runat="server" OnClick="lbNext_Click">下一页</asp:LinkButton><asp:GridView ID="gvMain" runat="server"></asp:GridView></div></form></body></html>页面代码using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page{CDisplayOdersInfo cdoi = new CDisplayOdersInfo();//pageIndex 页面索引(页面索引=当前页数-1),pageSize 每页显示多少数据(多少行)//pageCount 页面的总页数private static int pageIndex = 0;private static int pageSize = 50;private static int pageCount = 0;protected void Page_Load(object sender, EventArgs e){if (!IsPostBack) {GridViewDataBind();}}private void GridViewDataBind() {DataSet ds= cdoi.DisplayOrdersInfo(pageIndex,pageSize);gvMain.DataSource = ds;gvMain.DataBind();pageCount = cdoi.returnPageCount();lblPageNum.Text ="当前页数:"+ Convert.ToString(pageIndex+1);}protected void lbPrev_Click(object sender, EventArgs e){pageIndex--;if (pageIndex < 0) {Response.Write("<script language=javascript>alert('已到首页!')</script>");pageIndex++;return;}GridViewDataBind();}protected void lbNext_Click(object sender, EventArgs e){pageIndex++;if (pageIndex >=pageCount){Response.Write("<script language=javascript>alert('已到尾页!')</script>");pageIndex--;return;}GridViewDataBind();}}。
Aspnetpager对GridView分页并顺利导出Excel

Aspnetpager对GridView分页并顺利导出Excel⼀、前⾔谈到分页,在⽹页上简直到处都是。
⽹络的资源越来越多,如果不⽤分页技术来显⽰,就会拖拉很长很长。
下⾯给⼤家分享分页技术。
⼆、基本要点当要显⽰数据量⾜够⼤的时候,我们往往采⽤分页显⽰的处理办法。
分页有真分页和假分页。
假分页:从数据库中取出所有的数据,然后分页在界⾯上显⽰。
访问⼀次数据库,但由于选择的数据量⽐较⼤,所以第⼀次花费时间⽐较长,但之后每⼀页的显⽰都是直接、快速的,避免对数据库的多次访问。
真分页:确定要显⽰的数量和内容,然后每次都去数据库取出该少量数据,优点是数据量⼩,缺点是访问数据库频繁。
在⼤型⽹站中往往采⽤真分页,⽐如百度的图⽚获取。
三、实例展⽰下载好后,添加对Aspnetpager.dll控件的引⽤,然后在⼯具箱→右击→选择项→找到Aspnetpager →确定。
图⼀添加引⽤图⼆选择项图三添加⼯具图四展⽰效果前台代码:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AspNetPagerTest.aspx.cs" Inherits="test.AspNetPagerTest" %> <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %><!DOCTYPE html><html xmlns="/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>使⽤AspNetPager对GridView分页</title><%--引⽤分页控件的CSS--%><link href="css/Paging.css" rel="stylesheet" /></head><body><form id="form1" runat="server"><div><%--gridview控件--%><asp:GridView ID="GridView1" runat="server" Width="100%"CellPadding="4" ForeColor="#333333" GridLines="None"><AlternatingRowStyle BackColor="White" /><EditRowStyle BackColor="#2461BF" /><FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /><HeaderStyle BackColor="#507CD1" Font-Bold="True"ForeColor="White" Height="25px" HorizontalAlign="Center" /><PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /><RowStyle BackColor="#EFF3FB" Height="20px" HorizontalAlign="Center" /><SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /><SortedAscendingCellStyle BackColor="#F5F7FB" /><SortedAscendingHeaderStyle BackColor="#6D95E1" /><SortedDescendingCellStyle BackColor="#E9EBEF" /><SortedDescendingHeaderStyle BackColor="#4870BE" /></asp:GridView><%--分页控件--%><webdiyer:AspNetPager ID="AspNetPager1" runat="server"onpagechanged="AspNetPager1_PageChanged" CssClass="anpager"CurrentPageButtonClass="cpb" FirstPageText="⾸页" LastPageText="尾页"NextPageText="后页" PrevPageText="前页" PageSize="5" HorizontalAlign="Center"></webdiyer:AspNetPager><br /><%--导出按钮--%><asp:Button ID="btnExcel" runat="server" OnClick="btnExcel_Click" Text="导出Excel" /> <br /><br /><br /><br /></div></form></body></html>CSS代码:body { height: 382px;}.anpager{font: 11px Arial, Helvetica, sans-serif;padding:10px 20px 10px 0;margin: 0px;}.anpager a{padding: 1px 6px;border: solid 1px #ddd;background: #fff;text-decoration: none;margin-right:2px}.anpager a:visited{padding: 1px 6px;border: solid 1px #ddd;background: #fff;text-decoration: none;}.anpager .cpb{padding: 1px 6px;font-weight: bold;font-size: 13px;border:none}.anpager a:hover{color: #fff;background: #ffa501;border-color:#ffa501;text-decoration: none;}后台的代码:/********************************************************************** 作者:王雷* ⼩组:暂⽆* 说明:【】Aspnetpager对GridView分页,并导出Excel* 创建⽇期:2016年4⽉25⽇20:23:00* 版本号:V1.0.0************************************************************************/using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using System.Data.SqlClient;using System.IO; //导出Excel的时候⽤到namespace test{public partial class AspNetPagerTest : System.Web.UI.Page{public SqlConnection conn = null;public SqlCommand cmd = null;public SqlDataReader sdr = null;#region 界⾯加载--王雷--2016年4⽉25⽇20:21:29/// <summary>/// 界⾯加载/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){//调⽤绑定分页和GridViewBindGridView();}}#endregion#region 绑定分页和GridView⽅法--王雷--2016年4⽉25⽇20:20:59///绑定分页和GridView⽅法private void BindGridView(){//查询语句string SQL = "select * from USERS";//获取数据表格DataTable dt = ExecuteQuery(SQL, CommandType.Text);//初始化分页数据源实例PagedDataSource pds = new PagedDataSource();//设置总⾏数AspNetPager1.RecordCount = dt.Rows.Count;//设置分页的数据源pds.DataSource = dt.DefaultView;//设置当前页pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;//设置每页显⽰页数,在前台界⾯中有设置pds.PageSize = AspNetPager1.PageSize;//启⽤分页pds.AllowPaging = true;//设置GridView的数据源为分页数据源GridView1.DataSource = pds;//绑定GridViewGridView1.DataBind();}#endregion#region 执⾏传⼊的SQL查询语句--王雷-2016年4⽉25⽇20:19:54///<summary >///执⾏传⼊的SQL查询语句/// </summary>/// <param name="cmdText" >要执⾏的SQL查询语句或者是存储过程</param>/// <param name="ct">命令类型</param>/// <returns >返回更新的记录数 </returns>public DataTable ExecuteQuery(string cmdText, CommandType ct){//建⽴数据连接字符串SqlConnection cnn = new SqlConnection("server=.;uid=sa;pwd=123456;database=Login");DataTable dt = new DataTable();cmd = new SqlCommand(cmdText, cnn);mandType = ct;cnn.Open();using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) //关闭sdr的时候,也关闭连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何实现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。