簡體   English   中英

jQuery數據表,分頁和MVC。 從數據庫中獲取x金額

[英]Jquery Datatables, pagination and mvc. Take x amount from database

由於datatables問題,我希望從sql表中獲取所有數據,但是在我們的網站上運行它會導致嚴重的延遲,因為它有8000多個記錄。 所以我嘗試使用Take(10).ToList(); 在我的控制器中,但是jquery數據表只會填充10條記錄(顯然)。 我希望我的控制器中可以采用一種簡單的方法或方法,一次僅加載10條記錄。 但是仍將整個sql表的分頁保留在datatables中。 (遠射)

例如,如果我將整個表數據加載到數據表中,則其頁面將超過800頁。 如果我一次只記錄10條記錄,那么數據表將僅顯示一頁。 我需要一次記錄10條記錄,但還要顯示800頁的頁面,當我單擊下一頁或特定頁面時,它將加載這些記錄。 可以從控制器/ linq完成嗎? 無需在json / ajax通道上進行詳盡的長時間旅行。

控制者

    public PartialViewResult Listing()
    {
        var model = _db.MyDataBase.Take(10).ToList();

查看

<table id="example" class="table table-striped table-bordered table-hover">
   <tbody>
     @foreach (var p in Model)
         {
          <tr class="gridRow" data-id="@p.MyId">
          <td>@p.Id</td>
              // etc....

腳本:

<script type="text/javascript">
    $(function () {
        // Initialize Example
        $('#example').dataTable();
    });
</script>

我建議您對datatables.net進行服務器端處理。 請參閱Datatables.net

只需調整您的方法即可接收2個參數: pageNumber pageResults

比增加Skip你不想顯示的結果通過跳躍,並使用Take開始從點取結果Skip跳過。

用法:

  • Listing(1, 20) 1,20 Listing(1, 20) -將給我們結果0-20
  • Listing(3, 20) 3,20 Listing(3, 20) -將給我們結果60-80
  • Listing(5, 10) -將給我們結果50-60

碼:

public PartialViewResult Listing(int pageNumber, int pageResults)
{
    var model = _db.MyDataBase
        .OrderBy(row => row.ID)
        .Skip((pageNumber -1) * pageResults)
        .Take(pageResults)
        .ToList();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM