ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9415|回复: 10

[讨论] InfoPath讨论区

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-4-20 23:48 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
InfoPath是2003的组件之一,相关的资料和讨论都比较少,但是通过微软的介绍,你可以想象InfoPath强大的收集、共享、重用和管理信息的功能,这些都是实际会计工作中非常重要的环节。在此特开一贴,供有兴趣的同仁讨论!
InfoPath 2003 带来的十大好处
InfoPath 2003 可以用来创建丰富的动态表单,这些表单可供工作组和组织用于收集、共享、重用和管理信息,从而改进整个组织的协作和决策制定。下面列出了 InfoPath 可帮助您更有效地收集和管理信息的十个方面。
更高效地联系到人、访问信息和连接业务过程。

对 XML 和 Web 服务的支持可帮助您从桌面访问组织的业务系统和过程。您的组织的员工可以更高效地查看业务信息,从而使他们能够作出更好的决策,采取更有效的措施。
访问以前在相互不兼容的异类系统中捕获的信息。

通过使用行业标准技术(例如 XML 和 XML Web 服务),InfoPath 提供了一种内置的支持功能 - 即使信息位于相互不兼容的异类系统中,全组织内的员工也能访问和使用信息。
减少重复的和低效的数据输入。

InfoPath 支持 XML,可以帮助您在整个组织范围内收集和重用信息。这可以避免不必要地重复输入数据,从而可提高工作效率。
更有效地与工作组成员协作。

InfoPath 与 Microsoft Windows® SharePoint® Services 集成在一起,可以使工作组使用 Windows SharePoint Services 表单库来快捷而轻松地进行协作。
更灵活、更准确地收集信息。

InfoPath 中易于使用的表单使得收集信息的过程更简便、更高效,内置的数据验证功能提高了您输入的数据的准确性。重复的节和可选的字段使得用户可以在填充表单时动态地自定义表单(例如扩展或添加节),从而可提供更好的上下文,使信息更有意义。
随时随地收集并处理信息。

无论在连接到网络时还是在脱机状态下,均可随时随地处理 InfoPath 表单。如果您当前处于脱机状态,则可以在下次重新连接时同步您的数据。
降低培训需求。

InfoPath 使用人们熟悉的、易于使用的 Microsoft Office System 创作环境,缩短了培训时间,并且提供了丰富的创作功能(包括文本格式化、表、图像、带项目符号的列表和拼写检查器)。
快速创建易于使用的表单。

使用设计模式的 WYSIWYG(“what you see is what you get”,即“所见即所得”)功能轻松创建自定义表单,或处理 25 个现成的示例表单。
更轻松地开发高级表单解决方案。

InfoPath 具有可扩展的体系结构,可帮助程序员使用内置的脚本编辑器、丰富的对象模型和可编程的任务窗格开发健壮的高级解决方案。轻松地从头开始创建表单,或从现有的数据架构、Web 服务或可扩展标记语言 (XML) 数据创建表单。
轻松地在整个组织内部署和维护 InfoPath 解决方案。

基于服务器的部署模型使得 InfoPath 表单可供组织内的每一个使用;内置的版本控制功能可以检测到解决方案的更新,从而可使用户始终拥有最新的表单。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-20 23:50 | 显示全部楼层
<P>微软提供的课程</P>
<P><a href="http://office.microsoft.com/zh-cn/training/CR061832772052.aspx" target="_blank" >http://office.microsoft.com/zh-cn/training/CR061832772052.aspx</A></P>

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-21 09:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
<P>本来想找些容易入门的资料,结果却发现了这个,好文!学习中。</P>

<P>前一段时间做Office开发,用到了Biztalk和Infopath...<BR>如前文( <a href="http://hbifts.cnblogs.com/hbifts/archive/2005/04/13/137116.html" target="_blank" >在Biztalk中使用Log功能:)</A>  ) 所提到的,Biztalk直是太强大了...<BR>而且,后面和别人的聊天中得知,Biztalk的强大在于他可以很方便的把各种异构的环境进行统一,整合.<BR>这对于企业的开发特别重要...谁都不想自己以前的投资一下就没了(打水漂了,完全重来)...<BR>只是可惜,Biztalk的版本才是2004,即刚刚出来只有一年的时间,按M$的习惯,相关的文档是少之又少.....学习的难度比较高...<BR><BR>在使用Biztalk开发的时候,一般情况下面,它是直接可以把Hws等服务发布成WebService.那么调用就直接可以通过ASP.NET或是WinForm调用Web Service使用了...<BR><BR>不过,M$在Office2003中加入了一个新的产品-Infopath. 想必很多人都知道这个东西的...(但是,真正用过的,又有多少呢?.呵呵)<BR><BR>Infopath的表单,本质上就是一个XML文档,使用特定的XSLT进行显示,通过JScript进行交互...通过Infopath内置的功能,可以很轻松的实现WebService的调用(这个是Infopath最大的优点之一).同时,由于这个特性,Infopath在一些场合下面完全可以代替ASP.NET页面.<BR>Infopath开发方便,直接调用WS,不用像ASP.NET一样写过多的代码.直接的结果就是开发成本降低(你不用去理会什么ViewState之类了的),同时也能减少开发周期(直接拖控件,直接就可以和数据源进行绑定)...<BR><BR><BR>现在说几个Infopath开发的Cookie:<BR><BR>1.手动调用设计时加入的WebService.<BR>           在使用Infopath设计器时,我们是可以直接加入WebService的引用的(通过 工具-&gt;辅助数据源 进行添加),在添加后,我们可以选中文档打开时调用...但是,一般情况下面,我们大都不会把所有的WebService在文档打开的时间进行调用的.所以我们需要一种在其它的时候调用WebService的方法:<BR><BR>对于每加入的一个数据源,都会在 XDocument.DataObjects 中增加一个Object.通过此Object的Query()函数,我们就可以手动调用WebService了.<BR>比如调用GetTaskInfo 这个WebService:<BR></P>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>XDocument.DataObjects.Item('GetTaskInfo').Query()</DIV></DIV><BR>当然了,我们可能得给这个WebService传参数,或得到其返回值..<BR>为了操作,我们先加入WebService的引用(如上面的GetTaskInfo),然后提取表单文件.提取后的文件里面,我们可以找到GetTaskInfo.xml GetTaskInfo1.xsd等文件.这里的GetTaskInfo.xml就是我们调用此WebService时传递的Soap的xml结构.打开这个文件,我们可以看到如下的结构:<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&lt;dfs:myFields xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:ns7="http://microsoft.com/Biztalk2004/Hws/Hwsservice"&gt;&lt;dfs:queryFields&gt;&lt;ns7:GetTaskInfo&gt;&lt;ns7:taskID&gt;&lt;/ns7:taskID&gt;&lt;/ns7:GetTaskInfo&gt;&lt;/dfs:queryFields&gt;&lt;dfs:dataFields&gt;&lt;ns7:GetTaskInfoResponse&gt;&lt;ns7:Task&gt;&lt;/ns7:Task&gt;&lt;/ns7:GetTaskInfoResponse&gt;&lt;/dfs:dataFields&gt;&lt;/dfs:myFields&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></DIV></DIV>其中,&lt;dfs:queryFields/&gt;中的&lt;ns7:GetTaskInfo&gt;&lt;ns7:taskID/&gt;&lt;/ns7:GetTaskInfo&gt;就是此WebService的参数.<BR>&lt;dfs:dataFields&gt;中的就是返回值了.<BR>即,我们只要在调用WebService前把这个文件中的&lt;dfs:queryFields&gt;填入参数,调用后从&lt;dfs:dataFields&gt;取回返回值就OK了...<BR>Come on. Let's go!<BR>代码:<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>     var oAuxDom = XDocument.GetDOM('GetTaskInfo');<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>     oAuxDom.setProperty("SelectionNamespaces", 'xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:ns7="http://microsoft.com/Biztalk2004/Hws/Hwsservice');<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>     oAuxDom.selectSingleNode("/dfs:myFields/dfs:queryFields/ns7:GetTaskInfo/ns7:taskID").text=taskID;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>     XDocument.DataObjects.Item('GetTaskInfo').Query();<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>     var propertyNode;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>     var returnTask = oAuxDom.selectNodes("/dfs:myFields/dfs:dataFields/ns7:GetTaskInfoResponse/ns7:Task");</DIV></DIV><BR>returnTask就是此WebService的返回值了...此WebService的调用就Over了~<BR><BR>2.动态修改WebService的调用地址:<BR>  在Infopath设计的过程中,我们可以直接添加WebService的地址.非常方便.但是在布署的时候会有问题.因为布署时的WebService安装的机器是不确定的.如果WebService的地址每改一次就要重设计一次Infopath,那不是太麻烦了:(<BR>这里,我们还是得用到XDocument.DataObjects这个对象了~<BR>同上面的,我们把提取表单文件.关闭Infopath,用Notepad打开mainifest.xsf文件.<BR>我们可以在里面找到类似这样的代码:<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    &lt;xsf:dataObjects&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>        &lt;xsf:dataObject name="GetTaskInfo" schema="GetTaskInfo.xsd" initOnLoad="no"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>            &lt;xsf:query&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                &lt;xsf:webServiceAdapter wsdlUrl="http://localhost/HwsService/HwsService.asmx?WSDL" queryAllowed="yes" submitAllowed="no"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                    &lt;xsf:operation name="GetTaskInfo" soapAction="http://microsoft.com/Biztalk2004/Hws/Hwsservice/GetTaskInfo" serviceUrl="http://localhost/HwsService/HwsService.asmx"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;xsf:input source="GetTaskInfo.xml"&gt;&lt;/xsf:input&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                    &lt;/xsf:operation&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                &lt;/xsf:webServiceAdapter&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>            &lt;/xsf:query&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>        &lt;/xsf:dataObject&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>        <IMG src="http://hbifts.cnblogs.com/Images/dot.gif">.<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    &lt;/xsf:dataObjects&gt;</DIV></DIV>看到了没有,这就是一个DataObjects,里面有一个名叫GetTaskInfo的DataObject,是不是和上面的那个GetTaskInfo的DataObject很像?都有一个Query?<BR>嗯.这个就是上面的那个XDocument.DataObjects.Item("GetTaskInfo")对象...既然这样,都是XMLNode.那么就有办法可以修改WebService的地址了:)<BR>示例代码:<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>   var wsObj = XDocument.DataObjects.Item('GetTaskInfo');<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>   var url = "you new ws address.";<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>   var objOperation = new ActiveXObject("MSXML.DOMdocument");<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>   objOperation.async = false;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>   objOperation.validateOnParse = false;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>   objOperation.loadXML(wsObj.QueryAdapter.Operation);<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>   objOperation.selectSingleNode("//xsf:operation/@serviceUrl").text = url;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>   object.QueryAdapter.Operation = objOperation.xml;</DIV></DIV>这样,我们只要在调用Query()函数前先调用这个语句,就可以动态修改WebService的地址了~<BR><BR>呵呵,不要问我怎么得到那个Url啊...简单啊,在最前面放一个TextBox,让用户自己去填.或是直接使用JScript访问注册表,从注册表中得到Url(可以试试,我没试过).<BR>

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-21 09:55 | 显示全部楼层
这个文章主要写的是关于Dropdownlist的数据绑定...<BR><BR>1,最简单的方法,从控件上拖一个DropDownList到界面上面,在其属性选择"手动输入列表框项",然后自己把其中的数据一个个的填写到下面的表格中...<BR><BR>上面的方法应该是用的最多的了吧..方便,想写什么就写什么.爽..<BR>不过缺点就是静态的,不能动态进行修改.使用上有限制:(<BR><BR>2.同上,在属性中选择"在数据库,Web服务或文件中进行查找".通过这个方式,我们可以直接把WebService的结果集绑定到DropDownList里面..只要设置好其数据源和相应的项就OK了...<BR><BR>3.Infopath中使用其开发界面,基本上就上述两种方式了.但是如果绑定的数据不是来自于WS,或是数据就是存在于此Infopath表单中的呢?这个时候怎么去动态绑定数据呢?<BR>我们先来生成一个直接绑定WebService的DropDownList表单.<BR>WebService定义的代码(示例):<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    public class Data<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>    {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>        private string key;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>        public string Key<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>            get<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>                return key;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>            set<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>                key = value;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>        private string values;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>        public string Values<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>            get<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>                return values;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>            set<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>                values = value;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }        <BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>    }<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>        <BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>[WebMethod]<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>        public Data[] TransD()<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>        {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>            Data[] xx = new Data[2];<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>            for(int i=0;i&lt;xx.Length;i++)<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            {<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>                xx = new Data();<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>                xx.Key = "key"+i;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>                xx.Values = "values"+ i;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>            return xx;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>        }</DIV></DIV>在Infopath中添加一个辅助数据源(TransD).把数据绑定到DropDownList中去.Key为DropDownList的显示名称,Values为值...<BR><BR>这时,我们提取表单文件.提取后的表单文件中,我们可以看到若干个*.xsl文件.在上个文章中,我提到过,Infopath就是XML+XSLT+JScript.使用xml进行数据的存储, xslt进行数据的显示,JScript进行数据的交换.<BR><BR>于是....注意到我们的视图只有一个,默认的名字是View1.于是,我们用打开View1.xsl文件...<BR>找到这样的一段:<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    &lt;select class="xdComboBox xdBehavior_Select" title="" style="WIDTH: 130px" size="1" xd:CtrlId="CTRL10" xd:xctname="DropDown" value="" xd:boundProp="value" xd:binding="my:field5" tabIndex="0"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;xsl:attribute name="value"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;xsl:value-of select="my:field5"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;/xsl:attribute&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;xsl:choose&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;xsl:when test="function-available('xdXDocument:GetDOM')"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;option/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;xsl:variable name="val" select="my:field5"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;xsl:for-each select="xdXDocument:GetDOM(&amp;quot;TransD&amp;quot;)/dfs:myFields/dfs:dataFields/tns:TransDResponse/tns:TransDResult/tns:Data"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                    &lt;option&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;xsl:attribute name="value"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                            &lt;xsl:value-of select="tns:Values"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;/xsl:attribute&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;xsl:if test="$val=tns:Values"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                            &lt;xsl:attribute name="selected"&gt;selected&lt;/xsl:attribute&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;/xsl:if&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;xsl:value-of select="tns:Key"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                    &lt;/option&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;/xsl:for-each&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;/xsl:when&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;xsl:otherwise&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;option&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                    &lt;xsl:value-of select="my:field5"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;/option&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;/xsl:otherwise&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;/xsl:choose&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                    &lt;/select&gt;</DIV></DIV><BR>

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-21 09:56 | 显示全部楼层
熟悉XML和XSLT语法的人应该一眼就可以看出来这个代码的作用了.<BR>通过使用&lt;xsl:for-each&gt;把节点 XDocument.GetDOM('TransD').selectNodes("//dfs:myFields/dfs:dataFields/tns:TransDResponse/tns:TransDResult/tns:Data")  中的所有子节点显示出来.<BR>其中的tns:Key是显示的文本,tns:Values为其中的值.<BR><BR>找到这里,就知道方法显示Infopath表单中的数据的方法了.修改&lt;xsl:for-each&gt;中的数据源为Infopath表单中相应的节点...<BR>定义Infopath的数据源如下:<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&lt;my:Root &gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    &lt;my:Lists&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>        &lt;my:Key/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>        &lt;my:Value/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    &lt;/my:Lists&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>        <IMG src="http://hbifts.cnblogs.com/Images/dot.gif"><BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&lt;/my:Root&gt;</DIV></DIV>其中&lt;my:Lists&gt;在Infopath中定义为重复节...<BR>然后修改上面的XSLT代码如下:<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    &lt;select class="xdComboBox xdBehavior_Select" title="" style="WIDTH: 130px" size="1" xd:CtrlId="CTRL9" xd:xctname="DropDown" value="" xd:boundProp="value" xd:binding="my:field5" tabIndex="0"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;xsl:attribute name="value"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;xsl:value-of select="my:field4"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;/xsl:attribute&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;xsl:choose&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;xsl:when test="function-available('xdXDocument:GetDOM')"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;option/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;xsl:variable name="val" select="my:field5"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;xsl:for-each select="//my:Root/my:Lists"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                    &lt;option&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;xsl:attribute name="value"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                            &lt;xsl:value-of select="my:Value"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;/xsl:attribute&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;xsl:if test="$val=my:Value"&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                            &lt;xsl:attribute name="selected"&gt;selected&lt;/xsl:attribute&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;/xsl:if&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                        &lt;xsl:value-of select="my:Key"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                    &lt;/option&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;/xsl:for-each&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;/xsl:when&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;xsl:otherwise&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;option&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                    &lt;xsl:value-of select="my:field5"/&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                                &lt;/option&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                            &lt;/xsl:otherwise&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                        &lt;/xsl:choose&gt;<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>                    &lt;/select&gt;</DIV></DIV><BR>OK了,到这里.代码基本上就都完成了.现在只要把相应的数据填充进去就可以了..<BR>下面给一个测试的JScript代码,在此表单中,加入一个Button.把此Button的操作脚本函数定义如下:<BR>
<DIV windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    var node = XDocument.DOM.selectSingleNode("//my:Root/my:Lists");<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    node.selectSingleNode("./my:Key").text = "key1";<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    node.selectSingleNode("./my:Value").text = "Value1";<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    var target = node.cloneNode(true);<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    <BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    target.selectSingleNode("./my:Key").text = "key2";<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    target.selectSingleNode("./my:Value").text = "Value2";<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    <BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    node.parentNode.insertBefore(target,node);<BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    <BR><IMG src="http://hbifts.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>    XDocument.View.ForceUpdate();</DIV></DIV><BR>

TA的精华主题

TA的得分主题

发表于 2006-5-25 23:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
关键是要有实际应用的案例呀

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-1 13:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
5月在外面检查,6月要补干活。不过已经在收集资料了,计划7月有比较有分量的东西出来。

TA的精华主题

TA的得分主题

发表于 2006-6-19 16:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-7-28 10:58 | 显示全部楼层
<div>正在学习MS的教程</div>

TA的精华主题

TA的得分主题

发表于 2008-1-6 14:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习新东西,提高工作效率
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 17:55 , Processed in 0.045758 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表