Inforpath开发手记

 

有一个这样的需求:
需要将Infopath表单的内容提交到数据库,通过数据库查询结果。那么实际上该需求转换到技术上就表现在以下几个地方?1、如何将Infopath表单的内容提交到数据库;
2、如何更新、删除数据库的内容和表单一起;“
3、在什么地方触发该事件?
依照以上三条的总结,我们制定以下开发计划。
首先,所有的事件操作放置到Eventhandler事件触发器里面。将数据同步逻辑交代给Eventhandler做。Eventhandler的事件有ItemAdded,ItemUpdated,ItemDeleted等事件,实际上用于同步数据库这几个事件就够了,至于需要选择同步和异步事件那在于用户的需求。
下面就是代码的问题了,代码方面,我们需要怎样才能从MOSS中获取到Infopath表单的数据内容呢?我们来分析下Infopath提交文件以后的结构就清楚了。实际上,当Infopath表单被提交到文档库时是以XML文件格式存储的,于是我们可以考虑通过读取XML文件获取表单内容。
又出来几个新的问题:
1、表单的内容查询问题,因为Infopath表单被提交后会依据内容的设置和控件的使用标记顶部标记。因此我们必须动态获取表单的内容和NameSpace,使用NameSpace的目的是为了好使用XPATH查询XML内容。“
2、表单重复表和重复域必须对应一个子表,而且该字表必须和主表关联起来。因此我们通过分析Infopath提交后的XML,发现重复表和重复域都有一定的规律性,实际存储的时候总是以相同的标记不同的内容表示的,而且重复表有子节点。子节点也还有节点,这个问题就很容易操作了!
通过以上分析,我们获取表单内容和逐行插入数据库,或者依据我们设定的唯一标记查询数据库更新删除等就易如反掌了。最后贴点代码,但是今天没有环境,因此改天奉上。
希望对开发Infopath的兄弟们有点帮助。
 
posted @ 2009-01-06 09:12  浪漫稻草人  阅读(662)  评论(1)    收藏  举报