求救,从服务器获取的JSON格式的数据,怎么样快速绑定到datagridview上?

佛不问苍生 2017-12-27 03:26:17
求救,从服务器获取的JSON格式的数据,怎么样快速绑定到datagridview上?
JSON格式如下,主要想把JSON中data部分数据转成datatable或者其他方式,绑定到datagridview上。
由于data部分内容有多种(可能只有3个参数,也可能有30个参数),创建model类型就太多了,不知道大神们有没有其他方式,能够快速转换绑定到datagridview上或者能转换成Datatable。

备注下,是WINFORM。

格式如下 :
{
"success": true,
"message": "OK",
"data": [
{
"warehouseCode": null,
"shelfDetailCode": null,
"binCode": "BIN_P1",
"materialCode": "9AT01001-00",
"totalnum": 2,
"rownum": 1
},
{
"warehouseCode": null,
"shelfDetailCode": null,
"binCode": "BIN_P2",
"materialCode": "9AT01001-00",
"totalnum": 2,
"rownum": 2
}
]
}
...全文
702 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
佛不问苍生 2017-12-28
  • 打赏
  • 举报
回复
引用 20 楼 mkbaoquan 的回复:
你的是CS 结构的?那你应该首选那个 DATATABLE ,看看可不可以用datatable 来做,这样的话应该容易一些。希望能帮助到你。
这个服务主要是对外提供给前端JS叫用的。 cs结构只是一小部分。 所以直接返回datatable,对面前端处理比较麻烦。
佛不问苍生 2017-12-28
  • 打赏
  • 举报
回复
问题已经解决了,做两次反序列化。然后就可以绑定数据了。 问题是解决了,原因没搞懂。。
//叫用
            error_msg = Common.Function.clsHttpPost.VisitServer("getInventoryTempData", data, false);
            System.Diagnostics.Debug.WriteLine(error_msg);

            //反序列化
            var aa = JsonConvert.DeserializeObject(error_msg);            
            dynamic model = JsonConvert.DeserializeObject(aa.ToString());
            this.dataGridView1.DataSource = model.data;
Jason_Mao1 2017-12-27
  • 打赏
  • 举报
回复
你的是CS 结构的?那你应该首选那个 DATATABLE ,看看可不可以用datatable 来做,这样的话应该容易一些。希望能帮助到你。
佛不问苍生 2017-12-27
  • 打赏
  • 举报
回复
引用 18 楼 hanjun0612 的回复:
[quote=引用 17 楼 a200507002 的回复:] [quote=引用 15 楼 hanjun0612 的回复:] 你看一下 error_msg 具体是什么
这是打印出来的内容。[/quote] 那还真看不太出问题了。 这个你只能自己调试看看了。[/quote] 按其他人的说法,是这个错误导致,但我按他的方法修改了,还是不错。。。在找找其他办法。 http://www.mamicode.com/info-detail-1449860.html
正怒月神 2017-12-27
  • 打赏
  • 举报
回复
引用 17 楼 a200507002 的回复:
[quote=引用 15 楼 hanjun0612 的回复:] 你看一下 error_msg 具体是什么
这是打印出来的内容。[/quote] 那还真看不太出问题了。 这个你只能自己调试看看了。
佛不问苍生 2017-12-27
  • 打赏
  • 举报
回复
引用 15 楼 hanjun0612 的回复:
你看一下 error_msg 具体是什么


这是打印出来的内容。
正怒月神 2017-12-27
  • 打赏
  • 举报
回复
你看一下 error_msg 具体是什么
正怒月神 2017-12-27
  • 打赏
  • 举报
回复
引用 13 楼 a200507002 的回复:
大神,帮忙解决下这个是什么问题? 直接写JSON数据在上面,解析没有问题。换成API返回的数据,就出问题了。格式是一样的。 报错那个是API返回的,下面注释掉的那部分是可行的。
他说api给你的json字符串,没有data这个节点
佛不问苍生 2017-12-27
  • 打赏
  • 举报
回复
引用 14 楼 hanjun0612 的回复:
[quote=引用 13 楼 a200507002 的回复:] 大神,帮忙解决下这个是什么问题? 直接写JSON数据在上面,解析没有问题。换成API返回的数据,就出问题了。格式是一样的。 报错那个是API返回的,下面注释掉的那部分是可行的。
他说api给你的json字符串,没有data这个节点[/quote] 但实际上是有的,api串复制出来,就是下面注释的那段JSON
佛不问苍生 2017-12-27
  • 打赏
  • 举报
回复
引用 12 楼 hanjun0612 的回复:
[quote=引用 11 楼 a200507002 的回复:]
那可以使用dynamic

这个是针对数据源格式已经确定的吧,像我上面那个,前面带有message这类的,貌似不能直接用。解析可以,但是绑定数据源就为空
[/quote]
dynamic是动态编译的。
我目测你访问了api,数据源一般就是data包裹起来的json。所以你可以直接这么写

[/quote]
大神,帮忙解决下这个是什么问题?
直接写JSON数据在上面,解析没有问题。换成API返回的数据,就出问题了。格式是一样的。
报错那个是API返回的,下面注释掉的那部分是可行的。
正怒月神 2017-12-27
  • 打赏
  • 举报
回复
引用 11 楼 a200507002 的回复:
那可以使用dynamic

这个是针对数据源格式已经确定的吧,像我上面那个,前面带有message这类的,貌似不能直接用。解析可以,但是绑定数据源就为空
[/quote]
dynamic是动态编译的。
我目测你访问了api,数据源一般就是data包裹起来的json。所以你可以直接这么写

佛不问苍生 2017-12-27
  • 打赏
  • 举报
回复
引用 9 楼 hanjun0612 的回复:
[quote=引用 7 楼 a200507002 的回复:] [quote=引用 4 楼 hanjun0612 的回复:] 一般我都是 反序列化成model集合。 然后绑定数据源
我现在也是反序列化成model的,但是由于返回的内容较多,写model都要N个,太麻烦。 我就想看看有没有其他大神有类似的需求和解决方案。[/quote] 那可以使用dynamic [/quote] 这个是针对数据源格式已经确定的吧,像我上面那个,前面带有message这类的,貌似不能直接用。解析可以,但是绑定数据源就为空
正怒月神 2017-12-27
  • 打赏
  • 举报
回复
引用 7 楼 a200507002 的回复:
[quote=引用 4 楼 hanjun0612 的回复:]
一般我都是 反序列化成model集合。
然后绑定数据源

我现在也是反序列化成model的,但是由于返回的内容较多,写model都要N个,太麻烦。
我就想看看有没有其他大神有类似的需求和解决方案。[/quote]
那可以使用dynamic
佛不问苍生 2017-12-27
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
反序列化后绑定,你那个是外部有个整体封装,你的数据源是data部分
对于上面那个JSON,怎么才能快速获取到data部分?
佛不问苍生 2017-12-27
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
目前,一般的微软框架内置的控件,支持绑定 DataTable 或者 List<ExpandoObject> 集合,数据列可以自动适配。
大神的意思是,比如datagridview这类控件,可以绑定datattable也可以绑定list<>这样的集合? 我去试试看。
佛不问苍生 2017-12-27
  • 打赏
  • 举报
回复
引用 4 楼 hanjun0612 的回复:
一般我都是 反序列化成model集合。 然后绑定数据源
我现在也是反序列化成model的,但是由于返回的内容较多,写model都要N个,太麻烦。 我就想看看有没有其他大神有类似的需求和解决方案。
  • 打赏
  • 举报
回复
目前,一般的微软框架内置的控件,支持绑定 DataTable 或者 List<ExpandoObject> 集合,数据列可以自动适配。
  • 打赏
  • 举报
回复
反序列化后绑定,你那个是外部有个整体封装,你的数据源是data部分
正怒月神 2017-12-27
  • 打赏
  • 举报
回复
一般我都是 反序列化成model集合。 然后绑定数据源
zhuowp 2017-12-27
  • 打赏
  • 举报
回复
引用 2 楼 a200507002 的回复:
[quote=引用 1 楼 zhuo_wp 的回复:] 如果是wpf的话,很简单
<DataGrid ItemsSource="{Binding Source}"
                  AutoGenerateColumns="True"
                  CanUserAddRows="False"/>
winform的话,不熟悉。
WPF像上面这种不规则的JSON,也可以直接这样绑定?[/quote]AutoGenerateColumns="True"这句的意思就是,DataGrid根据类的属性自动生成列。
加载更多回复(2)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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