Sharepoint工作流与Infopath表单之间的数据传递(图解)
2010-03-04 00:06
204 查看
sharepoint工作流的开发其实有好多东西可以讲,但是我觉得这个可能是初学者比较模糊的地方,因此单独拿出来说下。如果没有做过工作流开发可能看以下的内容会觉得有点不知所云,唉~慢慢来吧,我其实是想写一个系列,可是也不知道从哪里开头。
使用vs2005或者vs2008开发sharepoint工作流,通常表单部分使用Infopath设计,Infopath的数据存储其实就是一个XML文件,当用户填写完Infopath表单,该XML传递到sharepoint宿主环境,这个时候可通过SPWorkflowTaskProperties.ExtendedProperties[域名]访问用户填写的内容,同时也可以给它赋值从而改变Infopath表单中的内容。自己做了一个图,简单说明一下数据是如何在对象模型和Infopath之间传递的。
![](http://images.cnblogs.com/cnblogs_com/wangyz/未命名.JPG)
首先说明几个概念:
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表单中时,不是直接传递给主数据源,而是给了辅助数据源,因此我们要设置主数据源的默认值为对应的辅助数据源,这样才能最终将值传递到主数据源。
今天舌头有点结巴,也不知道说清楚没有,唉~ 好久没打字,都退化了。
使用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表单中时,不是直接传递给主数据源,而是给了辅助数据源,因此我们要设置主数据源的默认值为对应的辅助数据源,这样才能最终将值传递到主数据源。
今天舌头有点结巴,也不知道说清楚没有,唉~ 好久没打字,都退化了。
相关文章推荐
- Javascript 表单之间的数据传递
- (转载)Javascript操作表单之间的数据传递
- Javascript 表单之间的数据传递
- Javascript 表单之间的数据传递
- javascript表单之间的数据传递
- Javascript 表单之间的数据传递代码
- 基于struts2 拦截器ResultType为chain的Action之间数据传递 ——表单页面打开优化 推荐
- javascript表单之间的数据传递!
- SPWorkflow 系列:工作流表单 Infopath 2010 与SPWF 数据传递
- javascript表单之间的数据传递
- javascript表单之间的数据传递!
- javascript表单之间的数据传递!
- form表单的Action.java文件和jsp之间数据传递
- javascript表单之间的数据传递
- 网页之间数据传递之二隐藏表单
- Javascript 表单之间的数据传递
- javascript表单之间的数据传递
- javascript控制表单之间的数据传递方法
- form表单的Action.java文件和jsp之间数据传递
- javascript表单之间的数据传递!