InfoPath中repeationg section动态填充数据
项目后台使用的是基于InfoPath的后台管理系统。后台主要是生成CMS系统需要的XML文件,但是有的内容和其他的内容有关联。为了减少编辑人员的操作难度,所有相关的内容,都需要自定义开发InfoPath,支持动态加载关联的数据内容。InfoPath界面如下:
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;
<!-- .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } -->
本身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>
<!-- .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } -->
- 机器学习的技术栈及应用实例脑洞
- 聊聊ES7与ES8特性
- 机器学习的技术栈及应用实例脑洞
- Ryu:OpenFlow协议源码分析
- 详解 LSTM
- 并发系列:从原子更新到CPU锁
- 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
- 神经网络 之 感知器的概念和实现
- 图解ByteBuffer
- TensorFlow-1: 如何识别数字
- 你应该知道的Java垃圾收集器 - 串行、并行、CMS、G1
- ckplayer 如何在PC上完美支持 m3u8播放
- TensorFlow-2: 用 CNN 识别数字
- js图片前端预览之 filereader 和 window.URL.createObjectURL
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法