欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

aspnetpager 詳解

系統(tǒng) 2145 0

分頁是Web應(yīng)用程序中最常用到的功能之一,在ASP.NET中,雖然自帶了一個(gè)可以分頁的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分頁功能并不盡如人意,如可定制性差、無法通過Url實(shí)現(xiàn)分頁功能等,而且有時(shí)候我們需要對(duì)DataList和Repeater甚至自定義數(shù)據(jù)綁定控件進(jìn)行分頁,手工編寫分頁代碼不但技術(shù)難度大、任務(wù)繁瑣而且代碼重用率極低,因此分頁已成為許多ASP.NET程序員最頭疼的問題之一。
?? 今天閑來無事就學(xué)習(xí)學(xué)習(xí)了aspNetPager分頁控件的用法:
AspNetPager針對(duì)ASP.NET分頁控件的不足,提出了與眾不同的解決asp.net中分頁問題的方案,即將分頁導(dǎo)航功能與數(shù)據(jù)顯示功能完全獨(dú)立開來,由用戶自己控制數(shù)據(jù)的獲取及顯示方式,因此可以被靈活地應(yīng)用于任何需要實(shí)現(xiàn)分頁導(dǎo)航功能的地方,如為GridView、DataList以及Repeater等數(shù)據(jù)綁定控件實(shí)現(xiàn)分頁、呈現(xiàn)自定義的分頁數(shù)據(jù)以及制作圖片瀏覽程序等,因?yàn)锳spNetPager控件和數(shù)據(jù)是獨(dú)立的,因此要分頁的數(shù)據(jù)可以來自任何數(shù)據(jù)源,如SQL Server、Oracle、Access、mysql、DB2等數(shù)據(jù)庫以及XML文件、內(nèi)存數(shù)據(jù)或緩存中的數(shù)據(jù)、文件系統(tǒng)等等。
1.首先下載aspnetpager控件,我這兒的版本是6.0.0.0?? 點(diǎn)擊下載
2.把控件加到項(xiàng)目中(添加自定義控件的方法),并把它拖放到頁面上:

< webdiyer:AspNetPager? ID ="AspNetPager1" ?runat ="server" ?
AlwaysShow
="True" ? //總是顯示分頁控件,即使要分頁的數(shù)據(jù)只有一頁?
??OnPageChanged
="AspNetPager1_PageChanged" ? //分頁發(fā)生改變時(shí)觸發(fā)事件
UrlPaging
="true"? //通過URL傳遞分頁信息的方式來分頁。如果設(shè)為true,禁用ViewState也能達(dá)到效果。如果設(shè)置為false,禁用了viewstate則無法實(shí)現(xiàn)分頁.?
NumericButtonTextFormatString ="[{0}]" ?//頁索引數(shù)字顯示的格式
?ShowCustomInfoSection
="Left" >?? //顯示當(dāng)前頁和總頁數(shù)信息,默認(rèn)值不顯示,為left則將顯示在頁索引前,為right則為頁索引后???????????? </ webdiyer:AspNetPager >

3.Page_Load事件:

?? protected ? void ?Page_Load( object ?sender,?EventArgs?e)
????????
{
????????????
if ?( ! Page.IsPostBack)
????????????
{
????????????????BindGridView();
????????????}

????????}

BindGridView方法如下:

??? public ? void ?BindGridView()
????????
{
????????????
string ?sql? = ? " select?*?from?gw_newsletter_group " ;// 自定義的SQL語句
????????????
int ?recordcount;
????????????DataSet?ds?
= ?GetPage(sql,? this .AspNetPager1.CurrentPageIndex,? this .AspNetPager1.PageSize, out ?recordcount);
????????????
this .AspNetPager1.RecordCount? = ?recordcount;
????????????
this .GridView1.DataSource? = ?ds;
????????????
this .GridView1.DataBind();
????????????AspNetPager1.CustomInfoHTML?
= ? " 記錄總數(shù):<b> " ? + ?AspNetPager1.RecordCount.ToString()? + ? " </b> " ;
????????????AspNetPager1.CustomInfoHTML?
+= ? " ?總頁數(shù):<b> " ? + ?AspNetPager1.PageCount.ToString()? + ? " </b> " ;
????????????AspNetPager1.CustomInfoHTML?
+= ? " ?當(dāng)前頁:<font?color=\ " red\ " ><b> " ? + ?AspNetPager1.CurrentPageIndex.ToString()? + ? " </b></font> " ;
????????}

其中的GetPage方法代碼如下:( GetConnection()是返回一個(gè)SqlConnection對(duì)象 )

/// ? <summary>
????????
/// ?Get?Data?By?CurrentPage
????????
/// ? </summary>
????????
/// ? <param?name="sql"> SQL </param>
????????
/// ? <param?name="currentPage"> current?Page </param>
????????
/// ? <param?name="pagesize"> Page?Size </param>
????????
/// ? <param?name="recordcount"> Total?Record </param>
????????
/// ? <returns></returns>

???????? public ?DataSet?GetPage( string ?sql,? int ?currentPage,? int ?pagesize, out ? int ?recordcount)
????????
{
????????????SqlDataAdapter?ada?
= ? new ?SqlDataAdapter(sql,?GetConnection());
????????????DataSet?ds?
= ? new ?DataSet();
????????????
int ?startRow? = ?(currentPage? - ? 1 )? * ?pagesize;
????????????ada.Fill(ds,?startRow,?pagesize,?
" table " );
????????????recordcount?
= ?GetPageRecord(sql);
????????????
return ?ds;
????????}

GetPageRecord方法:( 返回總的記錄數(shù) )

?? public ? int ?GetPageRecord( string ?sql)
????????
{
????????????sql?
= ?System.Text.RegularExpressions.Regex.Replace(sql,? " ORDER?BY.* " ,? "" );
????????????sql?
= ? " select?count(*)?from?( " ? + ?sql? + ? " )?as?temp " ;
????????????SqlCommand?cmd?
= ? new ?SqlCommand(sql,?GetConnection());
????????????cmd.Connection.Open();
????????????
int ?recordcount? = ?( int )cmd.ExecuteScalar();
????????????
return ?recordcount;
????????}

這里注意要去掉”O(jiān)rder By“的字符串( 聚合函數(shù)不能和"ORDER BY"連用 )
4.另外:還有個(gè)事件:

???? protected ? void ?AspNetPager1_PageChanged( object ?sender,?EventArgs?e)
????????
{
????????????BindGridView();

????????}

到目前為止就可以運(yùn)行看到效果: aspnetpager 詳解
地址欄顯示效果:
注意這里是把屬性: urlpaging=true,而且如果禁止了ViewState也能實(shí)現(xiàn)。
如果把 urlpaging=false 的話
如果禁止了ViewState就無法實(shí)現(xiàn)分頁功能了。
上面的代碼中有這樣一句話:

?AspNetPager1.CustomInfoHTML? += ? " ?總頁數(shù):<b> " ? + ?AspNetPager1.PageCount.ToString()? + ? " </b> " ;

這里就有一個(gè)問題是aspNetPage1.PageCount怎樣得出來的呢?我們并沒有為它賦值。(這里而且這個(gè)屬性是只讀的)
實(shí)際上它的值是本身的控件就實(shí)現(xiàn)了:我分析覺得代碼可能如下:

? public ? int ?GetPagerCount( string ?sql,? int ?pagesize)
????????
{
????????????
int ?recordcount? = ?GetPageRecord(sql);// 方法見上
????????????
int ?pagecount = recordcount / pagesize;
????????????
return ?(recordcount? % ?pagesize? == ? 0 ? ? ?pagecount?:?pagecount? + ? 1 );
????????}

這樣就可以得出到底分頁的頁數(shù).
最后補(bǔ)充說明:由于我只是初步研究這個(gè)控件,不過上面的代碼都是經(jīng)過測(cè)試通過的。
而且我還發(fā)現(xiàn)這個(gè)控件還有很多屬性可以改變它的樣式外觀的。而且還比較靈活的。希望能給朋友們帶來一些幫助。
另外如果有什么地方不正確還希望高手能及時(shí)的提出來!

aspnetpager 詳解


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品视频二区不卡 | 国产精品亚洲成在人线 | 欧美特黄aaaaaaaa大片 | av一二三区| 四虎影院新地址 | 91手机在线视频观看 | 久久99精品久久久久久综合 | 26uuu.mobi| 欧美成人区 | 国产九一精品 | 亚洲成人91 | 色网在线 | 欧美欲妇激情视频在线 | 欧美日韩国产成人在线 | 日韩中文字幕在线看 | 中文字幕在亚洲第一在线 | free japan xxxxhdsex69| 亚洲毛片网站 | 操网| 国产精品国产三级国产aⅴ无密码 | 久久久久久一区 | 国产欧美日韩不卡一区二区三区 | av免费资源| 精品卡1卡二卡3卡 | 欧美亚洲激情在线 | 大香久久 | 国产高清视频在线 | 91在线一区二区三区 | 成人1234| 国产噜噜在线视频观看 | 日韩avav | 精品久久久久久免费影院 | 日韩一区电影 | 色婷婷综合缴情综六月 | 国产欧美精品一区二区三区 | 免费精品久久久久久中文字幕 | 亚洲精品国产电影 | 亚洲最黄视频 | 日韩精品一区二区三区中文字幕 | 草久网 | 91久久青青草原免费 |