日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用临时表的GridView分页

發布時間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用临时表的GridView分页 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?本例子采用sql2000下的Nowthwind數據庫中的[Order Details]表

下面是存儲過程腳本

?

Code
?1ALTER????PROC?OrderDetailsPaging
?2(@PageIndex?int,--頁碼
?3?@PageSize?int,--頁尺寸
?4?@RowsCount?int?output)--總行數
?5AS
?6BEGIN
?7set?nocount?on
?8declare?@PageLowerBound?int
?9declare?@PageUpperBound?int
10declare?@RowsToReturn?int
11
12set?@PageLowerBound=@PageIndex*@PageSize+1
13set?@PageUpperBound=(@PageIndex+1)*@PageSize
14set?@RowsToReturn=@PageUpperBound
15
16set?rowcount?@RowsToReturn
17--創建帶一個自增鍵的臨時表
18create?table?#PageIndex
19(IndexID?int?identity(1,1)?not?null,
20?OrderDetailsID?int,
21?ProductID?int)
22insert?into?#PageIndex(OrderDetailsID,ProductID)
23select?OrderID,ProductID?from?[Order?Details]
24order?by?OrderID?asc
25
26select?@RowsCount=count(OrderID)?from?[Order?Details]
27
28select?pageindex.IndexID,od.OrderID,od.ProductID,od.UnitPrice,od.Quantity,od.Discount?
29from?[Order?Details]?od?inner?join?#PageIndex?pageindex?on?od.OrderID=pageindex.OrderDetailsID
30where?pageindex.IndexID?>=?@PageLowerBound?and?pageindex.IndexID<=?@PageUpperBound?and?
31pageindex.ProductID=od.ProductID
32
33END
34
35set?nocount?off
36set?rowcount?0
37
38GO

?

以下是頁面的隱藏代碼

?

Code
??1using?System;
??2using?System.Data;
??3using?System.Configuration;
??4using?System.Web;
??5using?System.Web.Security;
??6using?System.Web.UI;
??7using?System.Web.UI.WebControls;
??8using?System.Web.UI.WebControls.WebParts;
??9using?System.Web.UI.HtmlControls;
?10using?System.Data.SqlClient;
?11
?12public?partial?class?_Default?:?System.Web.UI.Page?
?13{
?14????private?const?string?sql_select_orderDetails?=?"select?OrderID,ProductID,UnitPrice,Quantity,Discount?from?[Order?Details]";
?15????private?const?string?sql_select_Categories?=?"select?CategoryID,CategoryName,Description,Picture?from?Categories";
?16????//?總記錄數
?17????private?static?int?Rows;
?18????//?當前頁數
?19????private?static?int?CurrentPageIndex=0;
?20????//?總頁數
?21????private?static?int?PageCount?=?-1;
?22????protected?void?Page_Load(object?sender,?EventArgs?e)
?23????{
?24????????if?(!Page.IsPostBack)
?25????????{
?26????????????this.BindData();
?27????????}

?28????}

?29????private?void?BindData()
?30????{
?31????????this.GridView1.DataSource?=?GetOrderDetails(CurrentPageIndex,GridView1.PageSize);
?32????????this.GridView1.DataBind();
?33????}

?34????private?DataSet?GetReportCategories()
?35????{
?36????????return?DBUtility.SQLAccess.ExecuteDataSet(DBUtility.SQLAccess.ConnectionString,?CommandType.StoredProcedure,?sql_select_orderDetails,?null);
?37????}

?38????private?DataSet?GetCategoryies()
?39????{
?40????????return?DBUtility.SQLAccess.ExecuteDataSet(DBUtility.SQLAccess.ConnectionString,?CommandType.Text,?sql_select_Categories,?null);
?41????}

?42????/**////?<summary>
?43????///?返回OrderDetails表中的數據
?44????///?</summary>
?45????///?<returns></returns>j

?46????private?DataSet?GetOrderDetails(int?pageindex,int?pagesize)
?47????{
?48????????SqlParameter[]?orderDetails_pars?=?new?SqlParameter[3];
?49????????orderDetails_pars[0]?=?new?SqlParameter("@PageIndex",?SqlDbType.Int);
?50????????orderDetails_pars[0].Value?=?pageindex;
?51????????orderDetails_pars[1]?=?new?SqlParameter("@PageSize",?SqlDbType.Int);
?52????????orderDetails_pars[1].Value?=?pagesize;
?53????????orderDetails_pars[2]?=?new?SqlParameter("@RowsCount",?SqlDbType.Int);
?54????????orderDetails_pars[2].Direction?=?ParameterDirection.Output;
?55????????DataSet?ds?=?DBUtility.SQLAccess.ExecuteDataSet(DBUtility.SQLAccess.ConnectionString,?CommandType.StoredProcedure,?"OrderDetailsPaging",?orderDetails_pars);
?56????????Rows?=?(int)orderDetails_pars[2].Value;
?57????????PageCount?=?this.GetPageCount(this.GridView1.PageSize,?Rows);
?58????????return?ds;
?59????}

?60????private?DataSet?GetAllOrderDetails()
?61????{
?62????????return?DBUtility.SQLAccess.ExecuteDataSet(DBUtility.SQLAccess.ConnectionString,?CommandType.Text,?sql_select_orderDetails,?null);
?63????}

?64????protected?void?GridView1_PageIndexChanging(object?sender,?GridViewPageEventArgs?e)
?65????{
?66????????this.GridView1.PageIndex?=?e.NewPageIndex;
?67????????this.GridView1.DataSource?=?this.GetOrderDetails(e.NewPageIndex,?GridView1.PageSize);
?68????????Response.Write(((DataSet)GridView1.DataSource).Tables[0].Rows.Count);
?69????????this.GridView1.DataBind();
?70????}

?71????protected?void?lbtn_First_Click(object?sender,?EventArgs?e)
?72????{
?73????????CurrentPageIndex?=?0;
?74????????this.GridView1.DataSource?=?GetOrderDetails(CurrentPageIndex,?GridView1.PageSize);
?75????????this.GridView1.DataBind();
?76????}

?77????protected?void?lbtn_Pre_Click(object?sender,?EventArgs?e)
?78????{
?79????????if?((--CurrentPageIndex)?<?0)
?80????????{
?81????????????CurrentPageIndex++;
?82????????????return;
?83????????}

?84????????else
?85????????{
?86????????????this.GridView1.DataSource?=?GetOrderDetails(CurrentPageIndex,?GridView1.PageSize);
?87????????????this.GridView1.DataBind();
?88????????}

?89????}

?90????/**////?<summary>
?91????///?下一頁按鈕
?92????///?</summary>
?93????///?<param?name="sender"></param>
?94????///?<param?name="e"></param>

?95????protected?void?lbtn_Next_Click(object?sender,?EventArgs?e)
?96????{
?97????????//?先判斷當前頁索引
?98????????if?((++CurrentPageIndex)?>?PageCount-1)
?99????????{
100????????????CurrentPageIndex--;
101????????????return;
102????????}

103????????else
104????????{
105????????????this.GridView1.DataSource?=?GetOrderDetails(CurrentPageIndex,?GridView1.PageSize);
106????????????this.GridView1.DataBind();
107????????}

108????}

109????protected?void?lbtn_Last_Click(object?sender,?EventArgs?e)
110????{
111????????CurrentPageIndex?=?PageCount?-?1;
112????????this.GridView1.DataSource?=?GetOrderDetails(CurrentPageIndex,?GridView1.PageSize);
113????????this.GridView1.DataBind();
114????}

115????/**////?<summary>
116????///?計算頁數
117????///?</summary>
118????///?<param?name="pagesize"></param>
119????///?<param?name="rows"></param>
120????///?<returns></returns>

121????private?int?GetPageCount(int?pagesize,?int?rows)
122????{
123????????return?(rows?+?pagesize?-?1)?/?pagesize;
124????}

125}

126

以下是頁面設計代碼

?

Code
?1<%@?Page?Language="C#"?AutoEventWireup="true"??CodeFile="Default.aspx.cs"?Inherits="_Default"?%>
?2
?3<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
?4
?5<html?xmlns="http://www.w3.org/1999/xhtml"?>
?6<head?runat="server">
?7????<title>無標題頁</title>
?8</head>
?9<body>
10????<form?id="form1"?runat="server">
11????<div>
12????????&nbsp;
13????????<div?style="font-size:?12px;?z-index:?101;?left:?92px;?width:?542px;?position:?absolute;
14????????????top:?76px;?height:?276px">
15????????<asp:GridView?ID="GridView1"?runat="server"?AllowPaging="True"?BorderStyle="None"
16????????????OnPageIndexChanging="GridView1_PageIndexChanging"?GridLines="Horizontal"?HorizontalAlign="Center"?Width="100%">
17????????????<PagerSettings?Mode="NumericFirstLast"?Position="TopAndBottom"?Visible="False"?/>
18????????????<RowStyle?HorizontalAlign="Center"?VerticalAlign="Middle"?/>
19????????????<HeaderStyle?BorderStyle="Dotted"?/>
20????????????<AlternatingRowStyle?BorderStyle="Dotted"?HorizontalAlign="Center"?VerticalAlign="Middle"?/>
21????????</asp:GridView>
22????????????&nbsp;?&nbsp;&nbsp;
23????????????<div?align="center"?nowrap="nowrap"?style="font-size:?12px;?z-index:?101;?left:?183px;
24????????????????width:?152px;?position:?absolute;?top:?246px;?height:?15px">
25????????????????<asp:LinkButton?ID="lbtn_First"?runat="server"?OnClick="lbtn_First_Click">首頁</asp:LinkButton>
26????????????????<asp:LinkButton?ID="lbtn_Pre"?runat="server"?OnClick="lbtn_Pre_Click">上一頁</asp:LinkButton>
27????????????????<asp:LinkButton?ID="lbtn_Next"?runat="server"?OnClick="lbtn_Next_Click">下一頁</asp:LinkButton>
28????????????????<asp:LinkButton?ID="lbtn_Last"?runat="server"?OnClick="lbtn_Last_Click">尾頁</asp:LinkButton></div>
29????????</div>
30????
31????</div>
32????</form>
33</body>
34</html>

?

此存儲過程利用臨時表來分頁,并不通用,也不帶排序,我想排序可以由服務器來完成,

而沒有必要由數據庫來做。

還有待進一步完善。

如需讓以上代碼正常運行,還需要寫一個ExecuteDataSet方法來完成從數據庫中讀取數據的功能。

轉載于:https://www.cnblogs.com/cykevin/articles/1293605.html

總結

以上是生活随笔為你收集整理的用临时表的GridView分页的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。