jqGrid无法显示多层级结构的数据,如何解决?
我们前往物流公司发快件,物流公司需要录入以下信息
托运单号,发件人姓名,地址,手机号码
收件人姓名,地址,手机号码
托运费,送货上门费,保险费,包装费
很显然,录入上面的信息就会设计4个对象:发货人,收货人,托运单和运费单
发货人,收货人不用解释了,大家应该知道的,
托运单是货物在运送过程中需要使用的
运费单是财务结算需要使用的
下面列出这4个对象所具有的属性.
发货人的属性:
代号,姓名,地址,手机号码
收货人的属性:
代号,姓名,地址,手机号码
托运单的属性:
托运单号,发件人姓名,地址,手机号码,收件人姓名,地址,手机号码
运费单的属性:
托运单号,发件人姓名,收件人姓名,托运费,送货上门费,保险费,包装费
在使用hibernate进行实体类映射时,我发现一个问题,有3个对象都具有发件人姓名这个属性,这样设计会不会冗余?
我想这样设计是不对的,因为这样做会浪费硬盘资源,于是我想了另外一个方案.
下面列出这个方案里每个对象的属性:
发货人的属性:
代号,姓名,地址,手机号码
收货人的属性:
代号,姓名,地址,手机号码
托运单的属性:
托运单号,发件人(object),收件人(object),运费单(object)
运费单的属性:
托运单(object),托运费,送货上门费,保险费,包装费
上面标示为(object)的是自己设计的对象类型,其余为string或者integer类型.
这样的话,对象与对象之间的映射关系就可以这样设计:
托运单对发件人,从托运单的角度来看是manyToOne,从发件人的角度来看,是oneToMany.
托运单对收件人,从托运单的角度来看是manyToOne,从收件人的角度来看,是oneToMany.
托运单对运费单,是oneToOne双向映射.
我使用jqGrid表格来显示数据,显示托运单的数据时,需要显示下列数据:
托运单号
发件人姓名,地址,手机号码
收件人姓名,地址,手机号码
托运费,送货上门费,保险费,包装费
但在查询数据时,返回的json格式的数据应该是这样(我没有具体看过):
{"托运单号":"1234",
"发件人":{"代号":"aaa","姓名":"小张","地址":"广东","手机号码","13512345678"},
"收件人":{"代号":"aba","姓名":"小李","地址":"上海","手机号码","13511111111"},
"运费单":{"托运费":"12.00","送货上门费":"13.00","保险费":"5.00","包装费","8.00"}
}
我想查询到的这个数据,除了托运单号可以正确显示之外,其余的数据是无法显示的,
因为,返回的json格式的数据是一个对象中包含有其他对象,这种是多层级结构的数据,
我想,jqGrid无法识别这种多层级结构的数据,它只能识别单层级结构的数据.
如何解决这个问题?一般的解决办法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
印象里似乎可以配置行数据还是单元格数据的format函数,在format函数中处理这个record,返回你需要的数据就可以了。
是不是可以配置记得不是非常清楚了,即使这样子不行,你也可以在js里拦截到ajax请求返回的数据,拦截到ajax数据以后:
比如
var responseData = {"a":1,"b":{"b1":2,"b2":3}}
var newDate ={}
newDate.a=responseData.a;
newDate.b1=responseData.b.b1;
这样子就把下层的数据提上来了,再让jqgrid加载newData即可