天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ASP.NET MVC2.0在Tab頁(yè)中實(shí)現(xiàn)異步無(wú)刷新分頁(yè)

  概述

  很多地方都存在以Tab頁(yè)來(lái)呈現(xiàn)數(shù)據(jù)的方式,比如網(wǎng)易、新浪、搜狐、QQ等知名的門(mén)戶網(wǎng)站的首頁(yè),還有大家熟知的博客園首頁(yè),都是用了tab頁(yè)來(lái)顯示數(shù)據(jù)。大家之所以喜歡用Tab,因?yàn)樗艽蟠蟮脑黾语@示數(shù)據(jù)的空間,能在固定的空間中顯示更多的數(shù)據(jù)。分頁(yè)也是為了方便數(shù)據(jù)的顯示,在應(yīng)用系統(tǒng)中必不可少。這篇文章使用Jquery在ASP.NET MVC中使用Tab頁(yè),以及在Tab頁(yè)中實(shí)現(xiàn)異步無(wú)刷新的分頁(yè)功能。估計(jì)這個(gè)大家都會(huì)用得到的。

  在ASP.NET MVC中實(shí)現(xiàn)分頁(yè),在之前的一篇博文:ASP.NET MVC2右鍵菜單和簡(jiǎn)單分頁(yè)中已經(jīng)實(shí)現(xiàn)了。實(shí)現(xiàn)的方式很簡(jiǎn)單,在table下面加上一段<a/><a/><a/>...的html就行了。

  先介紹一個(gè)Jquery插件:Tab,可以到http://jqueryui.com/download上下載。看下它自帶一個(gè)例子的截圖:

ddd

  效果圖:

gggg

  實(shí)現(xiàn)

  按照它的Demo,在ASP.NET mvc項(xiàng)目中引入js和css,以及Jquery。我在ASP.NET MVC的母板頁(yè)中引入這些文件:

    <link href="http://www.cnblogs.com/Content/base/ui.all.css" rel="stylesheet" type="text/css" />
<
script src="http://www.cnblogs.com/Scripts/jquery-1.4.1.js" type="text/Javascript"></script>
<
script src="http://www.cnblogs.com/Scripts/ui.core.js" type="text/Javascript"></script>
<
script src="http://www.cnblogs.com/Scripts/ui.tabs.js" type="text/Javascript"></script>

  引入之后,參考它的Demo在MVC項(xiàng)目中View中使用Tab。 可以看到比tab自帶的demo多來(lái)了一個(gè)getContentTab函數(shù)。他有兩個(gè)參數(shù),用于表示你要顯示

  哪個(gè)tab頁(yè)的第幾頁(yè)數(shù)據(jù)。這里默認(rèn)加載的時(shí)候,顯示tabs-Shoes的第一頁(yè)數(shù)據(jù)。

   <script type="text/Javascript">
$(document).ready(function () {
$("#tabs").tabs();
getContentTab('Shoes', 1);
});
</script>
<
div id="tabs">
<
ul>
<
li><a href="#tabs-Shoes" onclick="getContentTab('Shoes',1);">Shoes</a></li>
<
li><a href="#tabs-Electronics" onclick="getContentTab('Electronics',1);">Electronics</a></li>
<
li><a href="#tabs-Food" onclick="getContentTab('Food',1);">Food</a></li>
</
ul>
<
div id="tabs-Shoes">
</
div>
<
div id="tabs-Electronics">
</
div>
<
div id="tabs-Food">
</
div>
</
div>

  當(dāng)然在定義View之前要先寫(xiě)好控制器的代碼,很簡(jiǎn)單,基本上沒(méi)有代碼:

public ActionResult ViewCategory()
{
return View();
}

  好了,下面開(kāi)始我們重要的幾步。顯示table以及實(shí)現(xiàn)table的分頁(yè)。這個(gè)demo的tab定義了三個(gè)tab頁(yè),每一頁(yè)的table結(jié)構(gòu)是一樣的,所以我定義一個(gè)用戶控件來(lái)實(shí)現(xiàn)table和分頁(yè)。代碼如下:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcAjaxPaging.Models.ProductViewModel>" %>
<%
@ Import Namespace="MvcAjaxPaging.HtmlHelpers"%>
<table class="grid">
<
thead>
<
tr>
<
th>Product name</th>
<
th>Category</th>
</
tr>
</
thead>
<
tbody>
<% foreach (var product in ViewData.Model.Products) { %>
<tr>
<
td><%= product.Name %></td>
<
td><%= product.Category %></td>
</
tr>
<% } %>
</tbody>
</
table>
<
div class="pager">
<%= Html.Pager(ViewData.Model.PagingInfo.CurrentPage, ViewData.Model.PagingInfo.ItemsPerPage, ViewData.Model.PagingInfo.TotalItems, "", ViewData["CategoryDisplayName"] as string)%>
</div>

  我們?cè)偻ㄟ^(guò)一個(gè)ajax調(diào)用來(lái)將這個(gè)控件顯示在ViewCategory對(duì)應(yīng)的View上,定義一個(gè)js函數(shù):

function getContentTab(categoryName, page) {

var url = '<%= Url.Content("~/MyPaging/ViewByCategory/") %>' + categoryName + "/" + page;
var targetDiv = "#tabs-" + categoryName;
$.get(url, null, function (result) {
$(targetDiv).html(result);
});
}

  我們看上面代碼,我們?nèi)フ?qǐng)求服務(wù)端的ViewByCategory方法,獲取table中的數(shù)據(jù)。看ViewByCategory的代碼:

public ActionResult ViewByCategory(string categoryName, int? page)
{
categoryName = categoryName ?? this.categories[0];
int currentPageIndex = page.HasValue ? page.Value : 0;
ProductViewModel productViewModel = new ProductViewModel();

IList<Product> productsByCategory = this.allProducts.Where(p => p.Category.Equals(categoryName)).ToList();
productViewModel.Products = productsByCategory.Skip((currentPageIndex - 1) * 10).Take(10).ToList();
productViewModel.PagingInfo.CurrentPage = currentPageIndex;
productViewModel.PagingInfo.ItemsPerPage = 10;
productViewModel.PagingInfo.TotalItems = productsByCategory.Count;
return View("ViewByCategoryTable", productViewModel);
}

  為了簡(jiǎn)單起見(jiàn)數(shù)據(jù)來(lái)來(lái)自內(nèi)存,使用list的take來(lái)實(shí)現(xiàn)分頁(yè)。你可以很方便的改成從DB獲取數(shù)據(jù)。在看下如何生成分頁(yè)的html,其實(shí)很簡(jiǎn)單,我們只要在生成的分頁(yè)的HTML中使用getContentTab函數(shù)就行了。

public static string Pager(this HtmlHelper helper, int currentPage, int currentPageSize, int totalRecords,string urlPrefix,string status)
{
StringBuilder sb1 = new StringBuilder();

int seed = currentPage % currentPageSize == 0 ? currentPage : currentPage - (currentPage % currentPageSize);

if (currentPage > 0)
sb1.AppendLine(String.Format("<a href='#' onclick=getContentTab(/"{0}/",/"{1}/") >Previous</a>", status, currentPage));

if (currentPage - currentPageSize >= 0)
sb1.AppendLine(String.Format("<a href='#' onclick=getContentTab(/"{0}/",/"{1}/") >...</a>", status, (currentPage - currentPageSize) + 1));

for (int i = seed; i < Math.Round((totalRecords / currentPageSize) + 0.5) && i < seed + currentPageSize; i++)
{
sb1.AppendLine(String.Format("<a href='#' onclick=getContentTab(/"{0}/",/"{1}/") >{1}</a>", status, i + 1));
}

if (currentPage + currentPageSize <= (Math.Round((totalRecords / currentPageSize) + 0.5) - 1))
sb1.AppendLine(String.Format("<a href='#' onclick=getContentTab(/"{0}/",/"{1}/") >...</a>", status, (currentPage + currentPageSize) + 1));

if (currentPage < (Math.Round((totalRecords / currentPageSize) + 0.5) - 1))
sb1.AppendLine(String.Format("<a href='#' onclick=getContentTab(/"{0}/",/"{1}/") >Next</a>", status, currentPage + 2));

return sb1.ToString();
}

  效果

jjjj

kkkk

  總結(jié):ASP.NET mvc中實(shí)現(xiàn)了在tab頁(yè)中的異步無(wú)刷新分頁(yè)。這東西太常用了,放在這里,希望對(duì)你有所幫助。

  代碼:http://cid-aef1e64945224a20.office.live.com/self.ASPx/.Public/MvcAjaxPaging.rar

NET技術(shù)ASP.NET MVC2.0在Tab頁(yè)中實(shí)現(xiàn)異步無(wú)刷新分頁(yè),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 中国大陆一级毛片免费 | 美目盼兮amy198281 | 国产成人久久AV免费看澳门 | 年轻的的小婊孑2中文字幕 你是淫荡的我的女王 | 中文字幕亚洲第一 | 国产精品av免费观看 | 男人把女人桶到高潮嗷嗷叫 | 天美传媒麻豆精品 | 野花韩国高清完整版在线观看5 | 穿着丝袜被男生强行啪啪 | 这里只有精品在线视频 | 青青视频 在线 在线播放 | 在线精品视频成人网 | 国产精品青青青高清在线密亚 | 99视频免费在线观看 | 乳巨揉みま痴汉电车中文字幕动漫 | 乱码午夜-极品国产内射 | 亚洲综合中文字幕无线码 | 亚洲无线码一区在线观看 | 色综合久久88色综合天天提莫 | 亚洲乱码爆乳精品成人毛片 | 处破女免费播放 | 日本伦理片 中文字幕 | 国产第一页浮力影院 | 好男人好资源在线观看 | 在线亚洲视频无码天堂 | 国产福利视频第一导航 | 精品无码三级在线观看视频 | 欧美日韩另类在线专区 | 国产免费怕怕免费视频观看 | 久久99re8热在线播放 | 国产日韩亚洲精品视频 | 国产精品97久久AV色婷婷 | 亚洲中文字幕永久在线全国 | 国产精品国产三级国产an | 哒哒哒影院在线观看免费高清 | 久久se精品一区二区国产 | 国产成人精品电影在线观看 | 久久精品成人免费看 | 果冻传媒视频在线播放 | 亚欧免费观看在线观看更新 |