2013-02-14 24 views
0

我正在mvc3.net中創建運行時表格。從控制器我得到的JSON收集和查看正在創建運行時表根據JSON收集如何給運行時分頁到mvc3.net中的表格

第一我只是初始化表

<div id="DisplayBookChapterList" class="fLeft per30 mr15">   
    <table class="contentTable" id="tblDisplayChapterList" >    
     </table> 

在運行時感到下面填入表中的行給定代碼

$.getJSON("@Url.Action("GetBookChapterList", "CourseManagement")" + '/' + bookname, function (data) { 
$.each(data, function (key, val) { 
       BookChapterlist += '<tr><td style="display:none" id=ChapterListBookID value=' + val.BookID + '>' + val.BookID + '</td><td>' + val.ChapterNo + ' </td><td>' + val.Title + '</td><td><input type=checkbox id="' + val.ChapterID + '"></td></tr>'; 

} 
});    
$('#DisplayBookChapterList table').append(BookChapterlist); 

我想給這個動態創建的表分頁。

回答

0

您需要創建分頁鏈接以選擇特定頁面,下一頁,上一頁,第一頁,最後一頁或任何您需要的內容。例如。

<ul>   
    @foreach (var page in Enumerable.Range(1, numPages)) { 
     <li>@Html.ActionLink(page.ToString(), "GetBookChapterList", "CourseManagement", new {page}, new {@class = "page-link"})</li> 
    }   
</ul> 

請注意,所有鏈接都有css類「page-link」。

在服務器端,爲您的操作添加一個「頁面」參數,以便您知道要在控制器中獲取哪個頁面。

現在,回到HTML代碼:每個鏈接的href是地址從哪裏獲取數據,我們可以在我們的JavaScript代碼中使用此:

<script> 
    $(function() { 
     $(".page-link").on('click', function(e) { 
      e.preventDefault(); 
      $.getJSON($(this).attr('href'), function(data) { 
       console.log(data); 
      }); 
     }); 
    }); 
</script> 

對這種做法的好處是您可以輕鬆地讓客戶端禁用JavaScript:在「GetBookChapterList」操作中,檢查請求是否是ajax請求(Request.IsAjaxRequest())。如果是這樣,請返回所需的JSON數據。如果不是,則呈現顯示錶格的選定頁面的正常完整頁面。

這通常是一種很好的方法:如果可能,請確保該網站在沒有JavaScript的情況下工作,然後添加JavaScript以改進它。

0

爲您的GetBookChapterList操作方法添加一個可選的'Page'參數,並使GetBookChapterList返回該頁面的數據。如果您使用實體框架,請使用IQueryable上的Skip和Take方法來實現分頁。

在瀏覽器中,渲染下一個/上一個頁面鏈接位於獲取並重新呈現下一個/上一個頁面的數據的表格底部。