MVC+EF bootstrap-table使用DataTable遇到问题与解决

  MVC+EF返回数据集时都会对应一个实体,这种状况固然是肯定的实体,可是当返回的实体是不肯定的又该如何?思前想后,以为datatable应该能够知足需求,可是当兴致勃勃的组合完sql按照之前的方式( return Json(new { total = pageCount, rows = list }, JsonRequestBehavior.AllowGet);)返回json时前台接收报错 ”序列化类型为“System.Reflection.RuntimeModule”的对象时检测到循环引用“ 具体缘由还不是很清楚】 可是感受就是序列化json对象是失败,转而考虑直接返回json格式字符串,代码以下:
sql

 

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表头,下图显示效果。json

相关文章
相关标签/搜索