最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Asp.Net中的三種分頁方式總結(jié)

 更新時(shí)間:2010年06月09日 10:49:27   作者:  
解決分頁這個(gè)問題搞了一天半,耗時(shí)巨大,現(xiàn)在總結(jié)一下。
通常分頁有3種方法,分別是asp.net自帶的數(shù)據(jù)顯示空間如GridView等自帶的分頁,第三方分頁控件如aspnetpager,存儲(chǔ)過程分頁等。這里分別做總結(jié)。
第一種:使用GridView自帶分頁,這種是最簡單的分頁方法。
前臺(tái)的方法:
復(fù)制代碼 代碼如下:

<asp:GridView ID="GridView1" AllowPaging="true" runat="server"
onpageindexchanging="GridView1_PageIndexChanging" PageSize="3">
</asp:GridView>

后臺(tái)方法:
代碼
復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using JXSoft.TicketManage.Model;
using JXSoft.TicketManage.BLL;
using System.Text.RegularExpressions;
using System.Data;
namespace JXSoft.TicketManage.Web
{
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
BindData();
}
}
protected void BindData()
{
DataTable dt=new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
for (int i = 0; i < 10;i++ )
{
dt.Rows.Add(i.ToString(), i.ToString());
}
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
BindData();
}
}
}

第二種:使用個(gè)性化顯示的AspNetPager.dll進(jìn)行分頁
此處需要添加aspnetpager.dll的引用
前臺(tái):
復(fù)制代碼 代碼如下:

<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" >
</asp:GridView>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server"
CustomInfoHTML="第%CurrentPageIndex%頁,共%PageCount%頁,每頁%PageSize%條"
FirstPageText="首頁" LastPageText="尾頁" LayoutType="Table" NextPageText="下一頁"
onpagechanging="AspNetPager1_PageChanging" PageIndexBoxType="DropDownList"
PagingButtonLayoutType="Span" PrevPageText="上一頁" ShowCustomInfoSection="Left"
ShowPageIndexBox="Always" SubmitButtonText="Go" PageSize="4" TextAfterPageIndexBox="頁"
TextBeforePageIndexBox="轉(zhuǎn)到">
</webdiyer:AspNetPager>
</div>
</form>

后臺(tái):
復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using JXSoft.TicketManage.Model;
using JXSoft.TicketManage.BLL;
using System.Text.RegularExpressions;
using System.Data;
namespace JXSoft.TicketManage.Web
{
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
BindData();
}
}
protected void BindData()
{
DataTable dt=new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
for (int i = 0; i < 10;i++ )
{
dt.Rows.Add(i.ToString(), i.ToString());
}
DataSet ds = new DataSet();
ds.Tables.Add(dt);
Pager(this.GridView1, this.AspNetPager1, ds);
}
protected void Pager(GridView dl, Wuqi.Webdiyer.AspNetPager anp, System.Data.DataSet dst)
{
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dst.Tables[0].DefaultView;
pds.AllowPaging = true;
anp.RecordCount = dst.Tables[0].DefaultView.Count;
pds.CurrentPageIndex = anp.CurrentPageIndex - 1;
pds.PageSize = anp.PageSize;
dl.DataSource = pds;
dl.DataBind();
}
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
AspNetPager1.CurrentPageIndex = e.NewPageIndex;
BindData();
}
}
}

第三種:使用AspNetPager結(jié)合存儲(chǔ)過程進(jìn)行分頁
這種方法分頁稍微復(fù)雜一些,但是可以應(yīng)付比較大的數(shù)據(jù)量。
前臺(tái):
復(fù)制代碼 代碼如下:

<asp:GridView ID="GridView1" runat="server" CssClass="GridTable" AutoGenerateColumns="false" onrowdatabound="GridView1_RowDataBound" >
</asp:GridView>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server"
CustomInfoHTML="第%CurrentPageIndex%頁,共%PageCount%頁,每頁%PageSize%條"
FirstPageText="首頁" LastPageText="尾頁" LayoutType="Table" NextPageText="下一頁"
onpagechanged="AspNetPager1_PageChanged" PageIndexBoxType="DropDownList"
PagingButtonLayoutType="Span" PrevPageText="上一頁" ShowCustomInfoSection="Left"
ShowPageIndexBox="Always" SubmitButtonText="Go" PageSize="4" TextAfterPageIndexBox="頁"
TextBeforePageIndexBox="轉(zhuǎn)到">
</webdiyer:AspNetPager>

后臺(tái):
復(fù)制代碼 代碼如下:

//綁定方法中需要傳遞aspnetpager的兩個(gè)屬性
protected void DataBind(){
DataSet ds = reportQueryBLL.GetTcikDetailReport(this.txtStartDate.Text,this.txtEndDate.Text,int.Parse( this.DropDownListPartment1.SelectedValue),
this.txtPayPerson1.Text,this.txtTicketNum.Text,this.txtTicketNo.Text,
AspNetPager1.StartRecordIndex,AspNetPager1.EndRecordIndex);//注意最后兩個(gè)參數(shù)是aspnetpager的屬性。
this.GridView1.DataSource = ds;
this.GridView1.DataBind();
}
//分頁控件的頁索引變化事件
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
BindDetailReportToGv();
}
//page_base中需要加載首次的數(shù)據(jù)條數(shù)
DataSet ds = reportQueryBLL.GetDetail(this.txtStartDate.Text, this.txtEndDate.Text, int.Parse(this.DropDownListPartment1.SelectedValue), this.txtPayPerson1.Text, this.txtTicketNum.Text, this.txtTicketNo.Text);
this.AspNetPager1.RecordCount = ds.Tables[0].Rows.Count;
BindDetailReportToGv();


這里用的存儲(chǔ)過程比較復(fù)雜,因?yàn)镾QL語句沒有能夠放到視圖中,也無法直接從表中查出結(jié)果,這個(gè)存儲(chǔ)過程有點(diǎn)變態(tài),如果有朋友看到了,希望能指點(diǎn)一下。
其實(shí)存儲(chǔ)過程的核心在于:
復(fù)制代碼 代碼如下:

Create PROCEDURE [dbo].[P_GetPagedOrders2005]
(@startIndex INT,
@endindex INT
)
AS
select * from (SELECT ROW_NUMBER() OVER(ORDER BY IPid DESC) AS rownum,
[IPid],[IPFrom],[IPTo],[IPLocation],[IPCity],[IPToNumber],[IPFromNumber] from IPInfo) as U
WHERE rownum between @startIndex and @endIndex
GO


代碼
復(fù)制代碼 代碼如下:

--下方可以忽略
--我用到的是存儲(chǔ)過程:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create PROCEDURE [dbo].[pro_pager]
(@startIndex INT,
@endindex INT,
@strwhere varchar(200)
)
AS
SELECT tb_On_Tick_Info.On_Tick_ID_Int,tb_On_Tick_Info.On_Tick_SellDatetime_Dtm,tb_On_Tick_Info.On_Tick_TicketsNum_Str, tb_Department_Info.Dept_Name_Str, tb_User_Info.User_Name_Str,
tb_On_Tick_Info.On_Tick_SellNumber_Str, tb_On_Tick_Info.On_Tick_ShouldPay_Dec, tb_On_Tick_Info.On_Tick_Count_Int,
tb_On_Tick_Info.On_Tick_Discount_Dec, tb_On_Tick_Details.On_Tick_Details_StartNo_Int, CHARINDEX(N'a',
tb_On_Tick_Info.On_Tick_Note_Text) AS Expr3, tb_User_Info_1.User_Name_Str AS Expr1, tb_Ticket_Type.TicketType_Name_Dec,
COUNT( tb_On_Tick_Details.On_Tick_Details_ID_Int) AS Expr2 ,tb_Department_Info.Dept_ID_Int
into #temp
FROM tb_User_Info INNER JOIN
tb_On_Tick_Info ON tb_User_Info.User_ID_Int = tb_On_Tick_Info.On_Tick_SellPerson_Int INNER JOIN
tb_Department_Info ON tb_User_Info.User_DepartID_Int = tb_Department_Info.Dept_ID_Int INNER JOIN
tb_User_Info AS tb_User_Info_1 ON tb_On_Tick_Info.On_Tick_PayPerson_Int = tb_User_Info_1.User_ID_Int INNER JOIN
tb_On_Tick_Details ON tb_On_Tick_Info.On_Tick_SellNumber_Str = tb_On_Tick_Details.On_Tick_SellNumber_Str INNER JOIN
tb_Ticket_Type ON tb_On_Tick_Details.On_Tick_Details_TicketsType_Int = tb_Ticket_Type.TicketType_ID_Int
where 1=1 +@strwhere
GROUP BY tb_On_Tick_Info.On_Tick_SellDatetime_Dtm,tb_On_Tick_Info.On_Tick_TicketsNum_Str, tb_Department_Info.Dept_Name_Str, tb_User_Info.User_Name_Str,
tb_On_Tick_Info.On_Tick_SellNumber_Str, tb_On_Tick_Info.On_Tick_ShouldPay_Dec, tb_On_Tick_Info.On_Tick_Count_Int,
tb_On_Tick_Info.On_Tick_Discount_Dec, CHARINDEX(N'a', tb_On_Tick_Info.On_Tick_Note_Text), tb_User_Info_1.User_Name_Str,
tb_Ticket_Type.TicketType_Name_Dec, tb_On_Tick_Details.On_Tick_Details_StartNo_Int ,tb_Department_Info.Dept_ID_Int,tb_On_Tick_Info.On_Tick_ID_Int
declare @sql varchar(8000)
set @sql = 'select CONVERT(varchar(12) , On_Tick_SellDatetime_Dtm, 111 ) as On_Tick_SellDatetime_Dtm,Dept_Name_Str,User_Name_Str,On_Tick_SellNumber_Str,convert(varchar(15), On_Tick_ShouldPay_Dec) as On_Tick_ShouldPay_Dec,On_Tick_Count_Int,On_Tick_Discount_Dec'
select @sql=@sql+',sum(case tickettype_name_dec when '''+tickettype_name_dec+''' then expr2 else 0 end) ['+tickettype_name_dec+']'
from (select distinct tickettype_name_dec from tb_Ticket_Type ) as a
set @sql=@sql+' ,expr3,Expr1,On_Tick_TicketsNum_Str,Dept_ID_Int,On_Tick_ID_Int into ##t from #temp
group by On_Tick_SellDatetime_Dtm,Dept_Name_Str,On_Tick_TicketsNum_Str,User_Name_Str,On_Tick_SellNumber_Str,On_Tick_ShouldPay_Dec,On_Tick_Count_Int,
On_Tick_Discount_Dec ,expr3,Expr1,Dept_ID_Int,On_Tick_ID_Int order by On_Tick_SellDatetime_Dtm '
exec( @sql )
--select * from ##t
select * from (SELECT ROW_NUMBER() OVER(ORDER BY on_tick_id_int DESC) AS rownum,
* from ##t) as U
WHERE rownum between @startIndex and @endIndex
drop table ##t

相關(guān)文章

  • .NET性能優(yōu)化ValueStringBuilder拼接字符串使用實(shí)例

    .NET性能優(yōu)化ValueStringBuilder拼接字符串使用實(shí)例

    這篇文章主要為大家介紹了.NET性能優(yōu)化ValueStringBuilder拼接字符串的使用實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 如何限制asp.net中上傳文件的大小的代碼

    如何限制asp.net中上傳文件的大小的代碼

    maxRequestLength是控制上傳大小得參數(shù)請求的最大大?。ㄒ郧ё止?jié)為單位)
    2011-10-10
  • asp.net(C#)函數(shù)對象參數(shù)傳遞的問題

    asp.net(C#)函數(shù)對象參數(shù)傳遞的問題

    我們知道在.net里class是引用類型,在函數(shù)參數(shù)表中的對象傳遞的都是對象的引用,所以在函數(shù)體內(nèi)對其對象參數(shù)的修改會(huì)影響函數(shù)外對應(yīng)的對象本身,例如下面的程序.
    2009-12-12
  • ASP.NET MVC中的視圖生成實(shí)例分析

    ASP.NET MVC中的視圖生成實(shí)例分析

    這篇文章主要介紹了ASP.NET MVC中的視圖生成的過程,以實(shí)例形式詳細(xì)分析了控制器、布局與視圖的操作方法與技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • .Net使用EF Core框架連接Oracle的方法

    .Net使用EF Core框架連接Oracle的方法

    文章介紹了如何在.NET中使用Entity Framework Core框架連接Oracle數(shù)據(jù)庫,包括安裝必要的NuGet包、配置連接字符串、創(chuàng)建實(shí)體類和數(shù)據(jù)庫上下文類、注冊數(shù)據(jù)庫上下文服務(wù)以及測試數(shù)據(jù)庫數(shù)據(jù),感興趣的朋友一起看看吧
    2025-02-02
  • ASP.NET 2.0,C#----圖像特效處理

    ASP.NET 2.0,C#----圖像特效處理

    ASP.NET 2.0,C#----圖像特效處理...
    2007-04-04
  • 正確使用dotnet-*工具的方法

    正確使用dotnet-*工具的方法

    這篇文章介紹了正確使用dotnet-*工具的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • asp.net文件上傳解決方案(圖片上傳、單文件上傳、多文件上傳、檢查文件類型)

    asp.net文件上傳解決方案(圖片上傳、單文件上傳、多文件上傳、檢查文件類型)

    這篇文章主要介紹了asp.net文件上傳解決方案,包括:圖片上傳、單文件上傳、多文件上傳、檢查文件類型等案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-09-09
  • ASP.NET?MVC自定義操作過濾器

    ASP.NET?MVC自定義操作過濾器

    這篇文章介紹了ASP.NET?MVC自定義操作過濾器的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • .Net Core使用Socket與樹莓派進(jìn)行通信詳解

    .Net Core使用Socket與樹莓派進(jìn)行通信詳解

    這篇文章主要為大家詳細(xì)介紹了.Net Core使用Socket與樹莓派進(jìn)行通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評(píng)論

和林格尔县| 汉源县| 广河县| 西盟| 大厂| 奎屯市| 平舆县| 讷河市| 阿克| 霞浦县| 禄丰县| 高唐县| 兴海县| 临颍县| 沙河市| 闽清县| 杨浦区| 梁山县| 绿春县| 饶阳县| 绥滨县| 洪湖市| 铜梁县| 伽师县| 神池县| 时尚| 保德县| 扎赉特旗| 确山县| 雷波县| 上犹县| 内乡县| 通辽市| 图片| 德江县| 郁南县| 九龙坡区| 澎湖县| 惠来县| 黄梅县| 满洲里市|