2014-02-12 52 views
0

我想知道最簡單的方法是做什麼。這是我的場景:我有一個應用程序顯示用戶的審計歷史記錄。目前,這設置爲僅返回100條記錄,並且只顯示20條記錄。有沒有簡單的方法來使用js來實現分頁,這將顯示所有100個條目,然後當「下一頁」按鈕被點擊時,它將獲取下100個條目?下面是代碼的樣子:MVC 4用JavaScript尋址

在UserHelper我:

public AuditInfo GetAuditInfo(SearchInfo searchInfo) 
    { 
     AuditInfo auditInfo = new AuditInfo(); 
     if (searchInfo != null) 
     { 
      List<AuditRecord> auditRecords = 
       UserManager.GetAuditRecords(record => record.Username == searchInfo.UserName, 
               records => records.OrderByDescending(record => record.Date), 0, 100); 
      auditInfo.AuditRecords = auditRecords; 
     } 
     return auditInfo; 
    } 

而在控制我有:

public ActionResult AuditHistory(String username) 
    { 
     SearchInfo searchInfo = new SearchInfo { UserName = username }; 

     AuditInfo auditInfo = _userHelper.GetAuditInfo(searchInfo); 
     Response.CacheControl = "no-cache"; 
     Response.AddHeader("Pragma", "no-cache"); 
     Response.Expires = -1; 

     return PartialView(auditInfo); 
    } 

視圖模型簡單地返回一個列表AuditRecords和迭代通過他們在視圖中,用一些javascript爲數據表如下:

<script type="text/javascript"> 
$(document).ready(function() { 

    $('#tbl_std_documents').dataTable({ 
     "bFilter": false, 
     "bPaginate": false, 
     "bSort": false, 
     "bInfo": false 
    }); 

    $("a.comment").fancybox({ 
     'type': 'inline', 
     'transitionIn': 'elastic', 
     'transitionOut': 'elastic', 
     'hideOnContentClick': true, 
     'speedIn': 600, 
     'speedOut': 200, 
     'overlayShow': false 
    }); 

}); 
</script> 

車削在bPaginate和bFilter上允許我一次查看100條返回的記錄10,並允許基於搜索框進行過濾。我希望能夠一次查看100個條目,並具有從數據庫中抓取下一個100條的功能。謝謝您的幫助!

回答

2

您可以使用AJAX調用從數據庫中獲取其他記錄並將它們作爲JSON對象返回。

這是一個JSON方法的一個例子:

[HttpPost] 
public ActionResult GetRows(int page, int rowsPerPage) 
{ 
    var data = //grab data from database 
    return Json(data); 
} 

這是JavaScript調用:

$.ajax({ 
    url: '@Url.Action("GetRows")', 
    type: 'POST', 
    data: { 'page': 2, 'rowsPerPage': 100 }, 
    success: SuccessHandler, 
    error: OnFailHandler 
}); 

function SuccessHandler(data) 
{  
    //data has the same properties like the object you returned in JSON method on server 
    //you probably want to update your datatable here with new data 
} 

希望它能幫助。祝你好運!

+0

我會在哪裏放置ajax調用?我已經在網頁上的JavaScript內? – Skrubb

+0

是的,並且在SuccessHandler函數中,傳遞的參數是從服務器返回的JSON對象。 – korhner

+0

我對javascript不太好,SuccessHandler看起來/工作怎麼樣? – Skrubb