2017-01-31 12 views
0

MVCコントローラのJQuery標準データベースを使用しています。JQueryデータブル・サーバー側の処理

私のモデルには数千のレコードが含まれています。ロードするのに数秒かかってしまい、ローディング中にページが急激に長くなりました。すべてのローディング後に1ページあたり10レコードに設定されました。

私はdatatableサーバー側の処理を使用することを決めました。最初の読み込み時間を減らすために。私はそれをエンティティのフレームワークをmvcで動作させるには?

public ActionResult ProductList() { 
     ProductModel model = new ProductModel(); 
     model = db.productModels.ToList(); 
     return View(model) 
    } 

<table> 
@{ 
<th>columns</th> 
    foreach (var item in productmodel) 
    { 
     //loop for my logic for all products 

    <td>@item</td> 
    } 
} 

+0

に行きます。ロード時にバッチでデータをフェッチしようとします。遅延ロードも試すことができます –

+0

私は@UbiquitousDevelopersに同意します。おそらく、ここでページングを実装し、ProductListアクションの呼び出しごとに10レコードをロードする必要があります。あなたが言ったように、ロード後に1ページに10レコードしか表示しません。 –

+0

こちらをご覧ください:https://www.codeproject.com/Articles/1118363/GridView-with-Server-Side-Filtering-Sorting-and-Pa –

答えて

1

使用ページング:

ActionResult ProductList(int startIndex, int pageSize) 
{ 
    var page = db.ProductModels.Skip(startIndex).Take(pageSize); 
    return View(page); 
} 

あなたはページング、フィルタリング、およびソートにhere詳細を読むことができます。

0

これは最終的に私が望むものです。 クレジットは一度にレコードの数千を取得する代わりに、この男https://www.codeproject.com/Tips/1011531/Using-jQuery-DataTables-with-Server-Side-Processin

$(document).ready(function() { 
    $('#table_id').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "info": true, 
     "pageLength": 3, 
     "lengthMenu": [[10, 20, 50, -1], [10, 20, 50, "All"]], 
     "columns": [ 
      { "data": "id", "orderable": true }, 
      { "data": "productName", "orderable": true 
      }, 

     ], 
     "ajax":"@Url.Action("GetProductList","Home")" 
    }); 
}); 

    public struct DataTableData 
    { 
     public int draw { get; set; } 
     public int recordsTotal { get; set; } 
     public int recordsFiltered { get; set; } 
     public List<ProductTable> data { get; set; } 
    } 
    private int SortString(string s1, string s2, string sortDirection) 
    { 
     return sortDirection == "asc" ? s1.CompareTo(s2) : s2.CompareTo(s1); 
    } 
    public JsonResult GetProductList(int draw, int start, int length) 
    { 
     var model = db.ProductTables.ToList(); 
     DataTableData dt = new DataTableData();    
     string search = Request.QueryString["search[value]"]; 
     string ha= Request.QueryString["columns[0][orderable]"]; 
     string order = Request.QueryString["order"]; 
     string ord= Request.QueryString["order[0][dir]"]; 
     if (!string.IsNullOrEmpty(search)) 
     { 
      dt.data = model.Where(x=>x.productName.Contains(search)).ToList();// model.GetRange(start, Math.Min(length, model.Count - start)); 

     } 

     dt.data=model.Skip(start).Take(length).ToList(); 
     if (!string.IsNullOrEmpty(ord)) 
     { 

      dt.data.Sort((x, y) => SortString(x.productName, y.productName, ord)); 
     } 
     dt.draw = draw; 
     dt.recordsTotal = model.Count; 
     dt.recordsFiltered = model.Count; 
     return Json(dt, JsonRequestBehavior.AllowGet); 
    } 
関連する問題