找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9899

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15531

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-30 00:53  /   查看:1211  /  回复:0
SpreadJS V16对集算表做了增强,在集算表的数据管理器(DataManager)中也做了对应的功能增强。

新增了dataName用于支持字段别名。
例如下面的例子:
image.png712982177.png
image.png965950622.png
上面的集算表在构建表时,通过dataName设置了字段名称的映射。如上面红框的代码所示,在addTable的时候,在schema中设置了dataName:OrderId: {dataName: "Id"}
  1. var myTable = dataManager.addTable("myTable", {
  2.   remote: {
  3.     read: {
  4.       url: apiUrl
  5.     }
  6.   },
  7.   schema: {
  8.     columns: {
  9.       OrderId: {dataName: "Id"},
  10.       OrderDate: {dataType: "date"},
  11.       RequiredDate: {dataType: "date"},
  12.       ShippedDate: {dataType: "date"},
  13.       ShipVia: {dataMap: {1: "Speedy Express", 2: "United Package", 3: "Federal Shipping"}}
  14.     }
  15.   }
  16.     });
复制代码
Id表示后端数据源中的字段名称
image.png44593199.png
OrderId表示集算表dataManager的表中对应的字段名称。在后续生成的视图中,就可以使用OrderId来代替Id这个字段了,如下图所示:
image.png977098999.png
看到这里可能有人会问,看上去显示仅仅是更改列头的名字,那么如果仅仅是为了改列头名字,那么设置dataName,与设置view中的caption字段有何不同?

两者虽然最终表现上看起来差不多,但是在原理上有着本质的区别。caption就是列名的别名,列名默认会按照设置的value来进行显示,而value对应的就是table设置的字段。caption隶属于view,但是dataName隶属于table。一个table可以生成多个view。如果设置了dataName,那么所有的view中对应的value属性都需要跟dataName的设置保持一致。所以dataName可以理解为数据字典,将后端的数据字段与前端集算表中的命名建立联系。之后,在前端集算表中就不再使用后端的数据字段了,通通用映射的字段来代替。

dataName的应用场景:
1.如果最终用户想要自己按喜好配置不同的视图时,程序中需要提前设计好方便最终用户理解的dataName。因为最终用户往往并不了解DB构建规则,DB中表的命名也不便于最终用户理解。这个时候程序可以辅助创建dataName。这样最终用户在使用的时候用的就是映射之后便于理解的dataName,而无需关注这个dataName究竟在DB中代表的字段名称。

2.假设后端数据库中的字段名称做了修改,这个时候只需要在程序的dataName映射中做一下对应的修改即可。无需改动每个视图的配置。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部