Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >InfoPath中repeating section中赋值操作

InfoPath中repeating section中赋值操作

作者头像
八哥
发布于 2018-01-18 09:18:34
发布于 2018-01-18 09:18:34
1.1K0
举报
文章被收录于专栏:快乐八哥快乐八哥

最近项目需要自定义开发InfoPath Template,之前项目中只需要修改一些字段,所以觉得还是比较简单。只是InfoPath调试环境真的很不方便,必须每次开发好的InfoPath发布到SharePoint Server,然后在在线打开,调用本地InfoPath2007/InfoPath 2010/InfoPath2013的程序打开。所以这样想看一下自己开发的结果,还是要等几分钟。不知道InfoPath有本地的Server,Visual Studio调试可以直接本地打开.xsn文件。

功能需求如下(已经简化了),程序后台加载一个xml文件,然后点击”生成”,就把对应的数据填充到userName的文本框中。文本框使用的TextBox控件。

xml的结构如下:

代码语言:js
AI代码解释
复制
<root> 
    <persons>      
        <person>      
            <username>aaa</username>      
            <gender>man</gender>      
            <age>20</age>      
            <email>test@hotmail.com</email>      
        </person>      
 
        <person>      
            <username>aaa</username>      
            <gender>man</gender>      
            <age>20</age>      
            <email>test@hotmail.com</email>      
        </person>      
    </persons>      
</root>

InfoPath Template局部界面如下:

用来绑定的控件的Main Source结构如下,每个重复的Section绑定的是order节点,就是说这个InfoPath模板生成多个order节点。然后我们需要从从加载过来的xml,把username赋值给cutomername。

代码语言:js
AI代码解释
复制
<root>     
    <orders>      
        <order>      
            <customername></customername>      
            <products>      
                <product>      
                    <quantity></quantity>      
                    <unitprice></unitprice>      
                </product>      
            </products>      
        </order>      
        <order>      
            <customername></customername>      
            <products>      
                <product>      
                    <quantity></quantity>      
                    <unitprice></unitprice>      
                </product>      
            </products>      
        </order>      
    </orders>      
</root>

最开始的代码是,“生成”按钮的点击事件。事件内部代码。

代码语言:js
AI代码解释
复制
XmlDocument xmlDoc=new XmlDocument();xmlDoc.load("http://www.example.com/source.xml");XmlElment root=xmlDoc.DocumentElement;string userName=root.SelectSingleNode("/persons/person/username").text;thisXDocument.DOM.selectSingleNode("/orders/order/customername").text=userName;
<!-- .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; } -->

出现的问题,当用户创建一个新的section,点击“生成”按钮,还只是改变第一个section里面的username文本框的值。这是因为thisXDocument.DOM代表的是:获取一个对表单的基础 XML 文档的引用,采用 XML 文档对象模型 (DOM) 形式。所以上面写的XPath只是针对xml中的第一个绑定数据进行更改。需要修改代码,需要知道用户当前是点击了哪个section的“生成”按钮。其实我的思路被固定了,其实在点击“生成”按钮时,会传入一个DomEvent e参数给方法体。这个通过e.Source,我们可以取得当前section所对应的数据源。也就是你重复绑定的那个节点,在这里就是order。所以代码需要修改如下,才能在每个指定的section,点击“生成”按钮可以赋值给当前section的username文本框中。

代码语言:js
AI代码解释
复制
XmlDocument xmlDoc=new XmlDocument(); xmlDoc.load("http://www.example.com/source.xml"); XmlElment root=xmlDoc.DocumentElement; string userName=root.SelectSingleNode("/persons/person/username").text; e.Source.DOM.selectSingleNode("/customername").text=userName;//

当前最内部重复绑定的节点是order,所以xpath就是“/customername”。

小结:在InfoPath开发中,很多方法和事件不同Windows Form里面的编程理念。很多情况下InfoPath开发更多是让开发者去绑定数据,定义xml结构和xsd结构,然后更快的加载数据。在代码内部就是使用XPath,C#操作XML,然后进行数据的显示和生成。这也是早期类似InfoPath技术为什么很火的原因,开发起来相对快速,并且最后生成的数据是xml格式。在电子商务等平台上,XML具有先天的优势。但是发展了这么多年,完全架构XML技术的产品不多了,估计InfoPath属于古董级产品了。

参考资料:

http://msdn.microsoft.com/zh-cn/library/office/aa944582.aspx

http://msdn.microsoft.com/zh-cn/library/vstudio/fb63z0tw.aspx

http://msdn.microsoft.com/zh-cn/library/office/microsoft.office.interop.infopath.semitrust.docactionevent.source(v=office.14).aspx

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-03-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
XML: 使用XmlDocument 与 XmlReader 类
一. XmlDocument类: XmlDocument与XmlReader类从.NET 1.0就已经存在了。W3C定义了一个叫做文件对象模型(DOM: Document Object Model)的标准来处理XML文档。支持DOM的类可以自由地定位并修改XML文档。要想使用XmlDocument类,需要添加System.Xml.dll的引用,并且引入System.Xml命名空间。XmlDocument类使用DOM级别1与级别2,在内存中对XML进行表示。这个类可以定位寻找或者修改XML结点。
全栈程序员站长
2022/09/06
8390
TSINGSEE青犀视频流媒体播放器EasyPlayer-RTMP定制窗体开发过程分享
因为2020年年底的时候各大浏览器厂商逐渐开始摒弃FLASH,导致基于WEB的RTMP协议流播放被大家诟病,这时候客户端又逐渐被大家捡起来使用。这两天就有一个用户需要定制一个RTMP低延迟的播放器,需求如下:
TSINGSEE青犀视频
2021/04/15
5610
InfoPath中repeationg section动态填充数据
项目后台使用的是基于InfoPath的后台管理系统。后台主要是生成CMS系统需要的XML文件,但是有的内容和其他的内容有关联。为了减少编辑人员的操作难度,所有相关的内容,都需要自定义开发InfoPat
八哥
2018/01/18
1.2K0
InfoPath中repeationg section动态填充数据
C# WinForm 界面控件
1.首先插入新的子窗体form1,并设置IsMdiContainer = True 属性。
王 瑞
2022/12/28
3.4K0
C# WinForm 界面控件
C# WPF项目实战(经典)
Dispatcher.Invoke((Action)delegate {});
zls365
2020/12/29
2.3K0
C#操作XML方法汇总
一、简单介绍 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml")); //指定一个节点 XmlNode root=xml.SelectSingleNode("/root"); //获取节点下所有直接子节点 XmlNodeList
跟着阿笨一起玩NET
2018/09/18
3.3K0
SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解
提示: SELECT INTO 还可以用于使用另一个表的架构创建新的空表。只需添加一个导致查询不返回数据的 WHERE 子句:
小万哥
2023/11/30
1.3K0
SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解
ASP.NET WebAPI 测试文档 (Swagger)
SwaggerUI是一个简单的Restful API测试和文档工具。简单、漂亮、易用(官方demo)。通过读取JSON配置显示API .项目本身仅仅也只依赖一些html,css,js静态文件.你可以几乎放在任何Web容器上使用
HueiFeng
2020/02/12
1.9K0
C#调用新浪微博API生成RSS资源文件
作者:一点一滴的Beer 个人主页:http://beer.cnblogs.com
用户1170933
2022/05/10
9610
C#调用新浪微博API生成RSS资源文件
Enterprise Library Policy Injection Application Block 之三:PIAB的扩展—创建自定义CallHandler(提供Source Code下载)
本系列的第一部分对PIAB使用场景进行了简单的介绍,作中阐述了通过PI(Policy Injection)的方式实现了Business Logic和Non-Business Infrastructure Logic的分离,从而实现了AOP(Aspect Oriented Programming)。在第二部分中详细介绍PIAB的实现机制:通过自定义RealProxy的方式实现了Method Injection。通过这几天接收到的网友的留言,觉得很多人对在具体的项目开发中如何使用PIAB还有很多困惑,对PIAB
蒋金楠
2018/01/16
9550
Enterprise Library Policy Injection Application Block 之三:PIAB的扩展—创建自定义CallHandler(提供Source Code下载)
Unity-BattleStar丨12. 让数据更流畅:数据存储与性能优化
将BattleStar_GuideScene加载到build settings里,否则运行时会出现无法切换场景的现象。
星河造梦坊官方
2024/08/14
2390
uinty中对Xml文件的操作
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bering
2019/12/03
1.3K0
XML快速入门学习笔记
问:什么是 XML? 答:XML 指可扩展标记语言(EXtensible Markup Language);且是一种很像HTML的标记语言;设计宗旨是传输数据,而不是显示数据。 XML 标签没有被预定义,您需要自行定义标签,它设计为具有自我描述性。 目前,XML 在 Web 中起到的作用不会亚于一直作为 Web 基石的 HTML;XML 是各种应用程序之间进行数据传输的最常用的工具。
全栈工程师修炼指南
2020/10/23
9.5K0
XML快速入门学习笔记
C# TCP/IP 文件(图片、视频等)收发系统
1. 窗口最小化到托盘及右键图标显示菜单; 2. D:\Picture\device2 D:\Picture\device1 D:\Record 路径下有数据更新以后将新增加的文件通过TCP/IP上传到云端; 3. 界面上可以显示数据收发的进度条; 注意:1. 收发用同一个客户端 2. LocalPort 收发端需要不一样
zls365
2020/08/19
1.2K0
C# TCP/IP 文件(图片、视频等)收发系统
[C# 项目实战]: 制作一个备忘录(经典)
前几天群里有人问如何制作备忘录,感觉这样一个小实例挺适合新手们入门学习使用,所以就抽空做了出来。界面如下图:
用户9127601
2022/03/23
1.8K0
[C# 项目实战]: 制作一个备忘录(经典)
XML基础
随着Internet的飞速发展,HTML因扩展困难、交互性差和语义模糊等缺点在日益增长的网络设计需求面前呈现出弱势。标准、简洁、结构严谨、可扩展性高的XML应运而生。在推出之初,XML提供通用数据交换、改变Web发布、改变分布式计算的功能。如今,XML不仅对软件开发的各个方面都产生了巨大影响,而且在各行各业都得到了充分应用。
张哥编程
2024/12/17
3240
零基础AJAX入门(含Demo演示源文件)
作者:一点一滴的Beer  个人主页:http://www.cnblogs.com/beer
用户1170933
2022/05/10
1.3K0
零基础AJAX入门(含Demo演示源文件)
Ajax与Json的学习
AJAX: 1. 概念: * Asynchronous Javascript And XML”(异步 JavaScript 和 XML) * 异步和同步:客户端和服务器端相互通信的基础上 * 客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。 * 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。 Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 通过在后台与服务
Rochester
2020/09/01
2.7K0
Linux服务器下安装vmware虚拟机
https://dl-sh-ctc-2.pchome.net/08/b7/VMware-Workstation-Full-14.1.3-9474260.x86_64.bundle
思索
2024/08/16
5790
Linux服务器下安装vmware虚拟机
技术干货|如何利用 ChunJun 实现数据离线同步?
ChunJun 是⼀款稳定、易⽤、⾼效、批流⼀体的数据集成框架,基于计算引擎 Flink 实现多种异构数据源之间的数据同步与计算。ChunJun 可以把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从⽽为企业提供全⾯的数据共享,目前已在上千家公司部署且稳定运⾏。
袋鼠云数栈
2023/05/19
7840
相关推荐
XML: 使用XmlDocument 与 XmlReader 类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档