动态生成的DataTable如何通过Ajax传回前端?

crossbet 2017-07-25 02:09:21
如题,我通过sql查询到了一个动态列的DataTable,现在想转换成List传回前端,不知道该如何转换
...全文
763 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 2017-08-21
  • 打赏
  • 举报
回复
mvc的话 直接

return json(dt);
webform的话 write json就行了.. 用那个new类库..
qq_21717439 2017-08-21
  • 打赏
  • 举报
回复
你用的Bootstrap那更简单了,直接后台把dt转成json格式,前台js用 $('#divname).bootstrapTable就行
  • 打赏
  • 举报
回复
强类型的(包括匿名强类型的)对象集合,这是要重视的技术。包括你要绑定数据到某些控件,你也可以直接用(所有属性都是)强类型的集合类型对象,而不要用弱类型的 DataTable。 然后,json 字符串序列化是那么简单,直接在各种 c# 程序中调用序列化语句,就不要再用什么别的东西了。 所以最终,什么这个框架那个框架,这个 mcv 那个 cng 的框架方法,如果是抽象的多层的绕的,在你读取数据库和json序列化方面,都可以直接跳过去——不学。
  • 打赏
  • 举报
回复
其实,如果是直接使用 ado.net 查询数据库,可以直接获得自定义类型的强类型对象,例如写
using(var rd = dbcommand.ExecuteReader())
{
    var result = (from IDataRecord r in rd
                           select new 
                           {
                                 aa = (string)r["field_a"],
                                 bb = (DateTime)r["field_b"]
                           }).ToList();
    var json = JsonConvert.SerializeObject(result);
    Response.Write(json);
}
这样你就把一个强类型的对象集合序列化为 json 格式然后输出了。完全没有必要用什么 DataTable 倒手。
  • 打赏
  • 举报
回复
引用 4 楼 crossbet 的回复:
我用了一个ConvertHelper来做DataTable到List<ChangeItemNA>的转换,但是ChangeItemNA是一个已定义好的类,只支持固定列,当DataTable返回动态列时转换不了
所以,再明确了要将 DataTable 序列化为什么格式的 json 字符串之后,选择最为直截了当最轻量的转换方法,“一步到位”,不用多余的框架。
nitaiyoucala 2017-08-21
  • 打赏
  • 举报
回复
用Newtonsoft这个插件转出json格式传到前台吧
江南小鱼 2017-08-21
  • 打赏
  • 举报
回复
ajax前后端一般通过json交互,不是后端的DataTable直接输出到前端像后端一样能够访问DataTable
首推未来 2017-07-26
  • 打赏
  • 举报
回复
楼组百度吧, datatable转list的例子有, 就算datatable直接转换成json的例子也有。 你用定义的ChangeItemNA 转换不了 因为你这个是实体类了, 字段不匹配 , 应该定义泛型转换 。 查下资料吧,再好好分析
crossbet 2017-07-26
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
先了解前端有什么数据结构再说。
同上
crossbet 2017-07-26
  • 打赏
  • 举报
回复
引用 3 楼 shoppo0505 的回复:
[quote=引用 楼主 crossbet 的回复:] 如题,我通过sql查询到了一个动态列的DataTable,现在想转换成List传回前端,不知道该如何转换
用什么方式和格式传递的?[/quote] 我用的是Bootstrap-Table组件,通过Ajax方式向后台发送请求,返回的是Json格式的数据,如下代码片段: [System.Web.Mvc.HttpGet] public JsonResult GetChangeItemNA([FromUri]QueryOptions queryOptions) { DataTable dt = BLL.WP.cTask.StatChangeItemNA(queryOptions.StartTime, queryOptions.EndTime, queryOptions.ProductLineName, queryOptions.ProductTypeID); //客户端分页 var lstRes = ConvertHelper<ChangeItemNA>.ConvertToList(dt); return Json(new { data = lstRes }, JsonRequestBehavior.AllowGet); } 我用了一个ConvertHelper来做DataTable到List<ChangeItemNA>的转换,但是ChangeItemNA是一个已定义好的类,只支持固定列,当DataTable返回动态列时转换不了
shoppo0505 2017-07-25
  • 打赏
  • 举报
回复
引用 楼主 crossbet 的回复:
如题,我通过sql查询到了一个动态列的DataTable,现在想转换成List传回前端,不知道该如何转换
用什么方式和格式传递的?
  • 打赏
  • 举报
回复
先了解前端有什么数据结构再说。
crossbet 2017-07-25
  • 打赏
  • 举报
回复
有人能帮我解答一下吗?感激不尽~~~

62,257

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧