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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

sql server2005 分页特性

發(fā)布時間:2023/12/4 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql server2005 分页特性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在sql server 2005的新功能中,比較西黃分頁功能,通過查詢函數(shù)row_number over(order by field)實現(xiàn)是提取分頁數(shù)據(jù)當頁的記錄,此功能原理上和臨時表差不多,不過通過插敘語句操作就快捷多了,做了個demo,分頁效果很好。
1、新建一個default.aspx頁面,內容很簡單,就一個數(shù)據(jù)控件和一個分頁導航標記條。
<body>
??? <form id="form1" runat="server">
??? <div>
? <asp:DataGrid ID="datalist" runat="server"></asp:DataGrid>
? <asp:Label ID="pager" runat="server"></asp:Label>
??? </div>
??? </form>

</body>

2、在代碼里,主要根據(jù)傳送的參數(shù)去數(shù)據(jù)表里去當前頁的記錄,每次都只去一頁的記錄。

protected?void?Page_Load(object?sender,?EventArgs?e)
????????{
????????????Bind();
????????}
????????
//獲取記錄總數(shù)
????????private?int?RowCount
????????{
????????????
get
????????????{
????????????????
string?connStr?=?ConfigurationManager.ConnectionStrings["connstr"].ToString();
????????????????SqlConnection?conn?
=?new?SqlConnection(connStr);
????????????????conn.Open();
????????????????
string?sqlStr?=?"select?count(1)?from?tbl_MailList";
????????????????SqlDataAdapter?ada?
=?new?SqlDataAdapter(sqlStr,?conn);
????????????????DataSet?ds?
=?new?DataSet();
????????????????ada.Fill(ds);
????????????????conn.Close();
????????????????
return?int.Parse(ds.Tables[0].Rows[0][0].ToString());
????????????}
????????}
????????
//綁定數(shù)據(jù)
????????private?void?Bind()
????????{??
????????????
//首頁地址
????????????string?url="default.aspx";
???????????
????????????
//每頁數(shù)量
????????????int?size?=?10;
????????????
//總記錄
????????????int?TotalCount?=?RowCount;
????????????
//開始記錄
????????????int?start=1;
????????????
try
????????????{
????????????????start
=int.Parse(Request.Params["start"].ToString());
????????????}
????????????
catch
????????????{

????????????}
????????????
//結束記錄
????????????int?end=size;
????????????
try
????????????{
????????????????end
=int.Parse(Request.Params["end"].ToString());
????????????}
????????????
catch
????????????{
????????????}

????????????
string?connStr?=?ConfigurationManager.ConnectionStrings["connstr"].ToString();
????????????SqlConnection?conn?
=?new?SqlConnection(connStr);
????????????conn.Open();
????????????
string?sqlStr?=?"select?*?from?(select?*,row_number()?over(order?by?AddrId)?as?row?from?tbl_maillist)?as?mail?where?row?between?"+start+"?and?"+end;
????????????SqlDataAdapter?ada?
=?new?SqlDataAdapter(sqlStr,?conn);
????????????DataSet?ds?
=?new?DataSet();
????????????ada.Fill(ds);
????????????conn.Close();
????????????datalist.DataSource?
=?ds.Tables[0];
????????????datalist.DataBind();
????????????
//當前頁碼
????????????int?CurrentPage=1;
????????????
try
????????????{
????????????????CurrentPage
=int.Parse(Request.Params["CurrentPage"].ToString());
????????????}
????????????
catch
????????????{
????????????}
????????????
//分頁數(shù)量
????????????int?PageCount?=?TotalCount?/?size;
????????????
if?(TotalCount?%?size?!=?0)
????????????{
????????????????PageCount
=PageCount+1;
????????????}
????????????
//呈現(xiàn)頁面導航
????????????StringBuilder?sb?=?new?StringBuilder();
????????????
//只有1頁
????????????if?(PageCount?<?2||CurrentPage?==?1)
????????????{
????????????????sb.Append(
"首頁");
????????????????sb.Append(
"&nbsp;&nbsp;上一頁");
????????????}
????????????
else
????????????{
????????????????sb.Append(
"<a?href="+url+"?start=1&end="+size+"&CurrentPage=1>首頁</a>");
????????????????sb.Append(
"&nbsp;&nbsp;<a?href="+url+"?start="+((CurrentPage-2)*size+1)?+"&end="+?(CurrentPage-1)*size+"&CurrntPage="+(CurrentPage-1)+">上一頁</a>");
????????????}
????????????
//超過10頁只顯示10頁
????????????if?(PageCount?>?10)
????????????{??
????????????????
for?(int?intLoop?=?1;?intLoop?<?11;?intLoop++)
????????????????{
????????????????????
//當前頁沒有超連接
????????????????????if?(CurrentPage?==?intLoop)
????????????????????{
????????????????????????sb.Append(
"&nbsp;"?+?intLoop.ToString());
????????????????????}
????????????????????
else
????????????????????{
????????????????????????sb.Append(
"&nbsp;<a?href="?+?url?+?"?start="?+?((intLoop?-?1)?*?size?+?1)?+?"&end="?+?(intLoop?*?size)?+?"&CurrentPage="?+?intLoop?+?">"?+?intLoop?+?"</a>");
????????????????????}
????????????????}
????????????????sb.Append(
"");
????????????}
????????????
else
????????????{
????????????????
for?(int?intLoop?=?1;?intLoop?<?PageCount?+?1;?intLoop++)
????????????????{
????????????????????
//當前頁沒有超連接
????????????????????if?(CurrentPage?==?intLoop)
????????????????????{
????????????????????????sb.Append(
"&nbsp;"?+?intLoop.ToString());
????????????????????}
????????????????????
else
????????????????????{
????????????????????????sb.Append(
"&nbsp;<a?href="?+?url?+?"?start="?+?((intLoop?-?1)?*?size?+?1)?+?"&end="?+?(intLoop?*?size)?+?"&CurrentPage="?+?intLoop?+?">"?+?intLoop?+?"</a>");
????????????????????}
????????????????}
????????????}
???????????
????????????
if?(PageCount?<?2||CurrentPage==PageCount)
????????????{
???????????????
????????????????sb.Append(
"&nbsp;&nbsp;下一頁");
????????????????sb.Append(
"&nbsp;&nbsp;末頁");
????????????}
????????????
else
????????????{
????????????????sb.Append(
"&nbsp;&nbsp;<a?href="+url+"?start="+((CurrentPage*size)+1)+"&end="+(CurrentPage+1)*size+"&CurrentPage="+(CurrentPage+1)+">下一頁</a>");
????????????????sb.Append(
"&nbsp;&nbsp;<a?href="+url+"?start="+(((PageCount-1)*size)+1)+"&end="+PageCount*size+"&CurrentPage="+PageCount+">末頁</a>");
????????????}

????????????pager.Text?
=?sb.ToString();
??????????
????????}

? 執(zhí)行效果很快,適合大量數(shù)據(jù)的分頁。

轉載于:https://www.cnblogs.com/dfsxh/archive/2008/09/09/1287234.html

總結

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

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