InfoPath中repeationg section动态填充数据

简介:

项目 后台使用的是基于InfoPath的后台管理系统。后台主要是生成CMS系统需要的XML文件,但是有的内容和其他的内容有关联。为了减少编辑人员的操作 难度,所有相关的内容,都需要自定义开发InfoPath,支持动态加载关联的数据内容。InfoPath界面如下:

image

Insert Type和Content Type是从Config DataObject里面动态读取,content type右边的字段是根据content type左边的字段来过滤显示内容了。这个字段是通过Detail DataObject来读取的。conent type右边的字段是一个drop list box,也就是dropdown list下拉框。通过选择不同的字段,填充下面的title,abstract,以及最下面的Image Url和Image Tooltip。这个四个字段的数据是动态从RelatedContent DataObject中读取的。因为整个的大的section可以重复,所以最开始实现起来,问题还是蛮多的。主要使用到了current()函数,后续 博客里面将介绍,如何在repeating section中是使用current()函数,达到指定的section绑定不同的数据。

 

通过 使用current()函数,title,abstact,image url和image tooltip都可以正常的填充数据,但是保存好infopath之后,用户重新打开,发现前面提到的四个字段都为空,因为我是对这个四个字段动态绑定 RelatedContent数据源,并且是根据id(content type右边的那个字段)来筛选显示数据的。但是不知道为什么,infopath保存不了上述四个字段值。我最后找到一个比较简陋的办法时,将那四个字段 复制一份,名称都以Populate开始,就是这四个字段使用current()函数去动态加载数据,而正常的title,abstract,image url和image tooltip不去动态加载数据,和普通的infopath字段一样。然后需要用户最后点击最下面的“Binding Data”按钮,然后将Populate的值全部复制到普通的四个字段中。这样得以保存infopath中的数据。

 

“Binding Data”按钮事件的内部代码如下:

e.Source.selectSingleNode("title").text=e.Source.selectSingleNode("populatetitle").text; e.Source.selectSingleNode("abstract").text=e.Source.selectSingleNode("populateabstract").text; e.Source.selectSingleNode("image/@url").text=e.Source.selectSingleNode("image/@populateurl").text; e.Source.selectSingleNode("image/@tooltip").text=e.Source.selectSingleNode("image/@populatetooltip").text;

本身Main Source的xml结构如下:

<root> <contentItems configXML=""> <content inserttype="" contenttype="" id=""> <title></title> <abstract></abstract> <link url="" target=""></link> <image url="" tooltip=""></image> </content> <content inserttype="" contenttype="" id=""> <title></title> <abstract></abstract> <link url="" target=""></link> <image url="" tooltip=""></image> </content> <content inserttype="" contenttype="" id=""> <title></title> <abstract></abstract> <link url="" target=""></link> <image url="" tooltip=""></image> </content> </contentItems> </root>

 

 

 

目录
相关文章
|
JavaScript 搜索推荐 程序员
Vuepress + gitee五分钟免费搭建个人博客(保姆级教程)
前言 作为一个程序员,没有折腾过个人博客是不算完整的。技术文章的输出是我们程序员能力的一种体现,也是一种非常好的个人总结。 市面上有很多搭建个人博客的工具或框架,包括hexo、wordpress等等。不可否认,市面上有些博客系统做得很好,博客主题也很丰富,但是往往存在一个问题:比较重。 作为一个Vue程序员,我就比较推荐使用vuepress搭建个人博客,因为它毕竟是Vue出品的,大家熟知的vue官方就是利用vuepress搭建的。 本篇文章就从零开始教大家搭建一个免费的博客,零基础小白也可以学习哦!
4525 0
Vuepress + gitee五分钟免费搭建个人博客(保姆级教程)
Magisk模块:自动墓碑后台v1.7.1(测试版)
Magisk模块:自动墓碑后台v1.7.1(测试版)
4336 0
|
11月前
|
并行计算 异构计算
基于有限体积法(FVM)的MATLAB流体力学求解程序
基于有限体积法(FVM)的MATLAB流体力学求解程序
447 2
|
11月前
|
测试技术 数据库连接 数据处理
Python上下文管理器高级用法:解锁资源管理的无限可能
Python上下文管理器不止于文件操作,它能优雅处理数据库连接、锁、临时环境等“进入-退出”场景。本文通过10个实战案例,深入讲解其原理与高级用法,涵盖资源管理、性能计时、重试机制、测试环境搭建等,助你写出更安全、简洁的代码。
396 0
|
数据采集 机器学习/深度学习 分布式计算
客户老是流失?可能是你没用好大数据!
客户老是流失?可能是你没用好大数据!
385 2
|
人工智能 数据中心
上海市智算中心建设导则(2025年版)
本导则共分14章,总则部分阐述了总体要求、适用范围、符合性说明等,术语和定义部分汇总了主要的专用术语,并进行定义或说明。其余部分对本市智算中心建设的规划与选址、建筑与配套、规模与功能、 AI基础设施架构、集约高效、安全可靠、绿色节能,以及论证、评估与监测和边缘智算中心等方面进行了规范。
1154 13
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
**摘要:** 了解AI、ML和DL的旅程。AI是模拟人类智能的科学,ML是其分支,让机器从数据中学习。DL是ML的深化,利用多层神经网络处理复杂数据。AI应用广泛,包括医疗诊断、金融服务、自动驾驶等。ML助力个性化推荐和疾病预测。DL推动计算机视觉和自然语言处理的进步。从基础到实践,这些技术正改变我们的生活。想要深入学习,可参考《人工智能:一种现代的方法》和《深度学习》。一起探索智能的乐趣!
959 1
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
|
关系型数据库 应用服务中间件 虚拟化
镜像制作
镜像制作
830 2
|
存储 Linux Shell
在Linux中,如何查看当前路径?
在Linux中,如何查看当前路径?
|
SQL Java 关系型数据库
【JavaEE进阶】 @Transactional详解
【JavaEE进阶】 @Transactional详解