MVC+EF bootstrap-table使用DataTable遇到問題與解決


  MVC+EF返回數據集時都會對應一個實體,這種情況當然是確定的實體,但是當返回的實體是不確定的又該如何?思前想后,覺得datatable應該可以滿足需求,但是當興致勃勃的組合完sql按照以前的方式( return Json(new { total = pageCount, rows = list }, JsonRequestBehavior.AllowGet);)返回json時前台接收報錯 ”序列化類型為“System.Reflection.RuntimeModule”的對象時檢測到循環引用“ 具體原因還不是很清楚】 但是感覺就是序列化json對象是失敗,轉而考慮直接返回json格式字符串,代碼如下:

 

1 JsonSerializerSettings setting = new JsonSerializerSettings()
2                 {
3                     ReferenceLoopHandling = ReferenceLoopHandling.Ignore
4                 };
5 
6                 var ret = "{\"total\":" + dt.Rows.Count + ",\"rows\":" + JsonConvert.SerializeObject(dt, setting) + "}";
7                 
8                 return Json(ret, JsonRequestBehavior.AllowGet);
View Code

 

確實前台不再報上述錯誤,但是加載不上數據,查看了bootstrap-table api發下有個responseHandler屬性:加載服務器數據之前的處理程序,可以用來格式化數據。遂再次方法中嘗試把取得的數據轉換成json對象,如下代碼:

responseHandler: function (res) { //后台數據源為datatable返回json字符串,需要處理成json對象
res = eval('(' + res + ')')
return res;
}

最終數據成功加載。文章開頭我提過動態的列頭及bootstrap-table列頭需要從數據庫中動態獲取,程序中我做了特殊處理前台會動態生成columns,后台也會動態生成datatable表頭,下圖顯示效果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM