MvcPager分頁(yè)控件 適用于Bootstrap
軟件開(kāi)發(fā)分頁(yè)效果必不可少,對(duì)于Asp.Net MVC 而言,MvcPager 是個(gè)不錯(cuò)的選擇。
請(qǐng)?jiān)L問(wèn)http://www.webdiyer.com/mvcpager/
由于自帶的分頁(yè)樣式不能和項(xiàng)目整體風(fēng)格兼容,所以我們準(zhǔn)備改寫源代碼,使其能夠使用Bootstrap 的分頁(yè)樣式。
先來(lái)查看兩種分頁(yè)的html代碼
Bootstrap 樣式:
<ul class="pagination"> <li class="disabled"><a href="#">?</a></li> <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li> ... </ul>
一個(gè)ul標(biāo)簽,li 下面有一個(gè)a 標(biāo)簽.
MvcPager 樣式:
<!--MvcPager v2.0 for ASP.NET MVC 4.0+ ? 2009-2013 Webdiyer (http://www.webdiyer.com)--> <div data-maxpages="5" data-mvcpager="true" data-pageparameter="id" data-urlformat="/mvcpager/demo/basic/__id__/"><a disabled="disabled">首頁(yè)</a> <a disabled="disabled">上一頁(yè)</a> 1 <a href="/mvcpager/demo/basic/2/">2</a> <a href="/mvcpager/demo/basic/3/">3</a> <a href="/mvcpager/demo/basic/4/">4</a> <a href="/mvcpager/demo/basic/5/">5</a> <a href="/mvcpager/demo/basic/2/">下一頁(yè)</a> <a href="/mvcpager/demo/basic/5/">尾頁(yè)</a> <select data-pageindexbox="true" data-autosubmit="true"><option value="1" selected="selected">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select></div> <!--MvcPager v2.0 for ASP.NET MVC 4.0+ ? 2009-2013 Webdiyer (http://www.webdiyer.com)-->
這里就比較簡(jiǎn)單了,一個(gè)div 下只有a 標(biāo)簽.
那么問(wèn)題來(lái)了,我們?cè)撛趺葱薷脑创a來(lái)達(dá)到Bootstrap 分頁(yè)效果呢?
1、到官網(wǎng)下載MvcPager 源代碼
2、開(kāi)始研究html 生成規(guī)則.
這兩步筆者已經(jīng)幫你做了,下面跟我一起來(lái)做修改.
通過(guò)代碼調(diào)試跟蹤和查看源碼注釋,我們知道了最終的HTML 呈現(xiàn)是在PagerBuilder.cs 下的RenderPager() 方法.
var sb = new StringBuilder();
if (_ajaxPagingEnabled)
{
foreach (PagerItem item in pagerItems)
{
//修改前
//sb.Append( GenerateAjaxPagerElement(item) );
//修改后
sb.Append("<li>" + GenerateAjaxPagerElement(item) + "</li>");
}
}
else
{
foreach (PagerItem item in pagerItems)
{
//修改前
//sb.Append( GeneratePagerElement(item) );
//修改后
sb.Append("<li>" + GeneratePagerElement(item) + "</li>");
}
}
修改以上代碼以獲得li標(biāo)簽。由于ul標(biāo)簽是最后加上去的所以我們?cè)谶@里修改:
if (_pagerOptions.ShowPageIndexBox)
{
if (!_ajaxPagingEnabled)
{
var attrs = new Dictionary<string, object>();
AddDataAttributes(attrs);
tb.MergeAttributes(attrs, true);
}
sb.Append(BuildGoToPageSection());
}
else
sb.Length -= _pagerOptions.PagerItemsSeperator.Length;
//修改前
// tb.InnerHtml = sb.ToString() ;
//修改后,為ul加上class='pagination'以獲得boostrap 分頁(yè)樣式
tb.InnerHtml = "<ul class='pagination'>" + sb.ToString() + "</ul>";
有了以上還不行,還需要為當(dāng)前頁(yè)增加樣式,
修改后的GenerateAjaxAnchor(PagerItem item) 方法為:
private string GenerateAjaxAnchor(PagerItem item)
{
string url = GenerateUrl(item.PageIndex);
if (string.IsNullOrWhiteSpace(url))
//這里直接假的行內(nèi)樣式,可以使用class替換掉
return "<a style='z-index:2;color:#fff; cursor: default; border-color: #428bca;' disabled='disabled'>" + item.Text + "</a>";
//return HttpUtility.HtmlEncode(item.Text);
var tag = new TagBuilder("a") { InnerHtml = item.Text };
tag.MergeAttribute("href", url);
tag.MergeAttribute("data-pageindex", item.PageIndex.ToString(CultureInfo.InvariantCulture));
//修改后,添加了li標(biāo)簽
return "<li>" + tag.ToString(TagRenderMode.Normal) + "</li>";
}
對(duì)源代碼的修改就是這么多了,我們一起看看效果.
中文版效果:

英文版效果(同樣是修改源碼,增加了對(duì)英文的支持):

源碼下載:MvcPager分頁(yè)控件
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序本地存儲(chǔ)實(shí)現(xiàn)每日簽到、連續(xù)簽到功能
這篇文章主要介紹了微信小程序本地存儲(chǔ)實(shí)現(xiàn)每日簽到、連續(xù)簽到功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
javascript通過(guò)元素id和name直接取得元素的方法
這篇文章主要介紹了javascript通過(guò)元素id和name直接取得元素的方法,涉及javascript獲取元素的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
layer 刷新某個(gè)頁(yè)面的實(shí)現(xiàn)方法
今天小編就為大家分享一篇layer 刷新某個(gè)頁(yè)面的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
深入理解JavaScript是如何實(shí)現(xiàn)繼承的
這篇文章主要介紹了JavaScript是如何實(shí)現(xiàn)繼承的,有需要的朋友可以參考一下2013-12-12
微信小程序?qū)崿F(xiàn)星級(jí)評(píng)價(jià)效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)星級(jí)評(píng)價(jià)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
JS簡(jiǎn)單生成兩個(gè)數(shù)字之間隨機(jī)數(shù)的方法
這篇文章主要介紹了JS簡(jiǎn)單生成兩個(gè)數(shù)字之間隨機(jī)數(shù)的方法,涉及javascript數(shù)值運(yùn)算的相關(guān)技巧,需要的朋友可以參考下2016-08-08
javascript之DIV拖動(dòng)類 支持在FF下拖動(dòng),調(diào)用簡(jiǎn)單
javascript之DIV拖動(dòng)類 支持在FF下拖動(dòng),調(diào)用簡(jiǎn)單...2007-08-08

