使用脚本将数据从辅助数据源传送到 InfoPath 域
2007-05-30 10:47
435 查看
概要
loadTOCNode(1, 'summary');在 Microsoft Office InfoPath 2003中,不能直接将表单中的域绑定到辅助数据源中的数据。但是,本文介绍如何以编程方式转换辅助数据源中的数据,然后在运行时将转换后的数据传送到主数据源中的域。设计表单
loadTOCNode(2, 'summary');1. | 在 InfoPath 中启动一个新的空白表单。 | ||||||||||||||||||
2. | 切换到“数据源”任务窗格。要向您的表单中添加域,请按照下列步骤操作:
| ||||||||||||||||||
3. | 将“myBook”组从“数据源”任务窗格移到您的表单中,然后单击“重复表”。 | ||||||||||||||||||
4. | 在“数据源”任务窗格中,右键单击“myBookstore”组,然后单击“属性”。 此时出现“域或组属性”对话框。 | ||||||||||||||||||
5. | 选择“明细数据”选项卡,然后记下名称空间。 名称空间将采用以下形式: http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-09-30T04:46:51 单击“取消”关闭该对话框。 | ||||||||||||||||||
6. | 将您的表单另存为 Bookstore.xsn。 |
创建 XML 文件和 XML 样式表
loadTOCNode(2, 'summary');使用 XML 编辑器或文本编辑器(例如记事本)创建 XMLFile.xml 和 XSLTFile.xslt,如下所示:XMLFile.xml
<?xml version='1.0' ?> <bookstore> <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0"> <title>The Autobiography of Benjamin Franklin</title> </book> <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2"> <title>The Confidence Man</title> </book> <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6"> <title>The Gorgias</title> </book> </bookstore>
XSLTFile.xslt
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-09-30T04:46:51"> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="bookstore"> <my:myBooks> <xsl:apply-templates select="book" /> </my:myBooks> </xsl:template> <xsl:template match="book"> <my:myBook> <my:myTitle> <xsl:value-of select="title" /> </my:myTitle> <my:myISBN> <xsl:value-of select="@ISBN" /> </my:myISBN> <my:myGenre> <xsl:value-of select="@genre" /> </my:myGenre> </my:myBook> </xsl:template> </xsl:stylesheet>
注意:更改 XSLTFile.xslt 中的 my 名称空间以与您在上一节的步骤 5 中创建的名称空间相匹配。
向表单中添加脚本以执行转换,然后将数据传送到表单域
loadTOCNode(2, 'summary');1. | 返回 InfoPath。 Bookstore.xsn 必须以设计模式打开。 | ||||||||||||||||||
2. | 要将 XMLFile.xml 添加为您的表单的辅助数据源,请按照下列步骤操作:
| ||||||||||||||||||
3. | 要将 XSLTFile.xslt 添加为您的表单的辅助数据源,请按照下列步骤操作:
| ||||||||||||||||||
4. | 在“工具”菜单上,指向“脚本”,然后单击“加载事件时”。 Microsoft 脚本编辑器将启动。 | ||||||||||||||||||
5. | 将下面的代码添加到 XDocument::OnLoad 事件处理程序中://Update the data in the secondary data source, and then //get a reference to the DOM of the secondary data source. XDocument.DataObjects.Item("XMLFile").Query(); var XMLFileDOM = XDocument.GetDOM("XMLFile"); //Get the transform that is stored as a secondary data source. var XSLTFileDOM = XDocument.GetDOM("XSLTFile"); //Transform XMLFile by using the style sheet that is named XSLTFile. var TransformedDOM = new ActiveXObject("MSXML2.DomDocument.5.0"); TransformedDOM.async = false; TransformedDOM.validateOnParse = true; TransformedDOM.loadXML( XMLFileDOM.transformNode(XSLTFileDOM)); //Get a reference to the node in the primary document where you want to insert //the secondary data. var oBookstore = XDocument.DOM.selectSingleNode( "/my:myBookstore" ); var oBooks_Dest = oBookstore.selectSingleNode("my:myBooks"); var oBooks_Src = TransformedDOM.documentElement; //Replace the node in the primary document with the data from the //secondary data source. oBookstore.replaceChild( oBooks_Src, oBooks_Dest ); | ||||||||||||||||||
6. | 保存您对脚本所做的更改,然后关闭脚本编辑器。 |
使用 XML 转换测试表单
loadTOCNode(2, 'summary');1. | 在“文件”菜单上,指向“预览表单”,然后单击“默认”。 | |||||||||
2. | 当表单以预览模式打开时,XMLFile.xml 中的数据将使用样式表进行转换,然后表单的内容将被替换为转换结果。InfoPath 预览窗口的输出显示如下:
|
相关文章推荐
- Oracle使用游标删除所有用户数据表中的所有记录脚本
- shell脚本使用read命令从terminal读入数据
- 在shell脚本里使用sftp批量传送文件
- 4.Spark SQL:数据源Parquet之使用编程方式加载数据
- 4.Spark SQL:数据源Parquet之使用编程方式加载数据
- 玩家如何在游戏中使用辅助脚本
- 【COCOS2DX-LUA 脚本开发之十】使用Lua CJSON库进行encode与decode操作完成对Json数据转化
- 【PB】创建数据窗口时数据源的使用方式
- Ajax实例(三)-使用JSON传送数据
- 多视图控制器(一)使用代理传送数据
- SQLServer中使用javascript脚本验证数据
- 使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据)
- 使用JDBC的CachedRowSet实现将数据源中的数据读取到内存中进行离线操作
- 使用自定义的数据源进行DataGrid控件的数据绑定
- 关于mysql,使用脚本导入数据
- 讲解在java环境下使用jQuery进行JSON数据传送的交互过程
- shell脚本在日常工作中的使用--辅助生成代码
- MVVM模式WPF的ComboBox数据绑定,使用Dictionary作为数据源
- 使用RxJava从多个数据源获取数据
- WebDataTree 使用XML做数据源绑定数据