Sharepoint工作流与Infopath表单之间的数据传递(图解)

sharepoint工作流的开发其实有好多东西可以讲,但是我觉得这个可能是初学者比较模糊的地方,因此单独拿出来说下。如果没有做过工作流开发可能看以下的内容会觉得有点不知所云,唉~慢慢来吧,我其实是想写一个系列,可是也不知道从哪里开头。

使用vs2005或者vs2008开发sharepoint工作流,通常表单部分使用Infopath设计,Infopath的数据存储其实就是一个XML文件,当用户填写完Infopath表单,该XML传递到sharepoint宿主环境,这个时候可通过SPWorkflowTaskProperties.ExtendedProperties[域名]访问用户填写的内容,同时也可以给它赋值从而改变Infopath表单中的内容。自己做了一个图,简单说明一下数据是如何在对象模型和Infopath之间传递的。

 

首先说明几个概念:

1、在Infopath中有主数据源和辅助数据源,主数据源只有一个,辅助数据源可以有多个。

2、为了与vs传递数据必须在Infopath中建立一个辅助数据源,名称必须是ItemMetadata,XML格式必须是<z:row xmlns:z="#RowsetSchema" ows_域名1="" ows_域名2="" ... ... />

3、主数据源中的域名要与辅助数据源中的域名一一对应,如:域名1、域名2... ...

 

理解了上面的基本知识后就可以开始通过对象模型来读取和设置Infopath表单的值了。

1、读值:

string 变量1 = SPWorkflowTaskProperties.ExtendedProperties["域名1"].ToString(); , 变量1是Infopath表单中主数据源中域名1的值

2、赋值:

SPWorkflowTaskProperties.ExtendedProperties["域名1"] = 变量2,  Infopath表单中辅助数据源的ows_域名1的值变成了变量2,注意该操作将改变的是辅助数据源中的值,主数据源中的值并未改变。

 

从上面我们可以了解到赋值过程并未改变主数据源中的值,这不是我们想要的,我们需要改变主数据源的值,那怎么做呢?再接着往下看。

在Infopath表单中,设置主数据源中域名1的默认值为@ows_域名1,这样当打开表单时主数据源中域名1的值就被改成与辅助数据源中域名1的值一致了。

 

好了,到此我们就清楚了,Infopath表单提交给宿主时,SPWorkflowTaskProperties.ExtendedProperties["域名1"]中保存的是主数据源中的值。SPWorkflowTaskProperties.ExtendedProperties["域名1"]再次传递到Infopath表单中时,不是直接传递给主数据源,而是给了辅助数据源,因此我们要设置主数据源的默认值为对应的辅助数据源,这样才能最终将值传递到主数据源。

 

今天舌头有点结巴,也不知道说清楚没有,唉~ 好久没打字,都退化了。

 

 

转载于:https://www.cnblogs.com/wangyz/archive/2010/03/04/1677895.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值