jqGrid无法显示多层级结构的数据,如何解决?

发布于 2022-09-01 06:28:36 字数 1791 浏览 26 评论 0

我们前往物流公司发快件,物流公司需要录入以下信息
托运单号,发件人姓名,地址,手机号码
收件人姓名,地址,手机号码
托运费,送货上门费,保险费,包装费

很显然,录入上面的信息就会设计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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

格子衫的從容 2022-09-08 06:28:36

印象里似乎可以配置行数据还是单元格数据的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即可

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文