参考js删除多行 https://help.fanruan.com/finereport/doc-view-3713.html
1对多,多选关系填报实现:
DB结构要求:‘客户产品对照表’在数据库表存储“客户:产品”结构为1:N;即1个客户多个产品,在db表存多行。
填报页面要求:勾选后将勾选的选项写入数据库,未勾选的选项如果已经存在,则需要删除。勾选多项,则在db中写入多行。
实现步骤:
报表展示时,通过控件限制只展示和操作单个客户的信息。
同时展示多个客户的话,第4步的删除提交会删除页面展示的全部客户。
如果将第4步中的删除也添加true限制条件,是可以只删除单个客户,但是当填报用户全部不勾选时,就没法删除数据表原有信息了。(这与删除提交的实现方式有关 ,页面选择的信息会删除,未选的反而会留下 https://help.fanruan.com/finereport/doc-view-186.html )
1)通过全关联,将每个客户都与所有产品关联,得到一个完整的1对多关系表(无论对应的产品是否已存在,不存在的产品也需要展示出来,便于勾选)。
2)将1的结果集再与已有的客户产品对照表关联,得到哪些产品属于已选择。
3)每行都对应一个勾选框,勾选后单元格值即为true。
①默认不勾选
② 将2)中已勾选的行,通过条件属性将新值设为true
4)将勾选true的行对应的客户先从db表删除【删除提交】
① 提交类型:删除提交
② 字段:客户
③ 主键:客户
此配置,能实现无论用户是否全部取消勾选,还是更改勾选,都会先把此客户所有行都从db表删除。
5)在将勾选true的行的客户、产品2个字段只能提交写入数据库表【智能提交】
① 提交类型:只能提交
② 字段:客户、产品
③ 主键:客户、产品
④ 提交条件:勾选单元格=true
第5)步骤中
一定要把客户、产品2个字段都勾选为主键!!!否则每个客户只能写入1条数据!!
一定不要勾选‘未修改不更新’
【失败尝试】通过下拉框多选,返回数组的形式。可以多行写入,但刷新后,未能展示已选择选项。 |