MOS2010中集成Infopath表单点滴

表单发布

表单发布后,会产生一个Feature在系统的TEMPLATESFEATURES目录下,FT开头

What Happens When a Form Is Uploaded?

When a form is uploaded, it generates a feature for your SharePoint farm. The feature

files are generated in the SharePoint 14 hive under TEMPLATESFEATURES. The feature folder is prefixed with FT for form-template.

The feature is deployed globally to your site collections and can be activated just like

any other feature. The form feature appears in the Site Collection Features list,

What Happens When a Form Is Activated to a Site Collection?

表单Feature激活到站点后,作为一个站点的Content Type使用

When a form is activated to a site collection, the site collection feature for the form

is activated, as shown in Figure 19.11. The form is now available as a content type in

your form library.

 

XSN结构

  • Infopath设计模式下打开XSN文件,从菜单File Save as Source Files,XSN中内容就会保存在一个目录下
  • 或者使用Winzip,winrar打开xsn文件,可以看到里面的内容

manifest.xsf,就是表单的主要文件

表单重新打包

偶尔使用这个功能,在设计工具产生的表单包含了不必要的内容时,或者想知道其细节时使用,两个方法

  • 使用文件的关联使用Infopath打开manifest.xsf 然后另存为XSN
  • 使用makecab tool【C:\WINDOWS\system directory】使用类似如下的cab定义文件

; directives for <YourFormTemplate>.xsn

.Set CabinetNameTemplate=<FormName>.xsn

;** These files will be stored in cabinet files

.Set Cabinet=on

.Set Compress=off

manifest.xsf

myschema.xsd

sampledata.xml

template.xml

view1.xsl

Invoice.xsd

; Replace this line with other files that should be included in the xsn

; end of directives

运行makecab /f settings.txt 就可以生成xsn文件

表单中的代码

由于表单本身是xml文件的,因此可以使用xml的技术访问表单内容,详细参考infopath sdk,例子如下

XPathNavigator formData = this.CreateNavigator();

XPathNavigator expenseGroup = formData

.SelectSingleNode("/my:SPWFiAExpenseReport/my:Expenses",

NamespaceManager);

XPathNodeIterator expenses = expenseGroup.SelectDescendants(

"Expense",

expenseGroup.NamespaceURI,

false);

double total = 0;

foreach (XPathNavigator expense in expenses)

{

string value = expense.SelectSingleNode(

"my:Amount", NamespaceManager).Value;

double amount = double.Parse(value);

total += amount;

}

formData.SelectSingleNode(

"/my:SPWFiAExpenseReport/my:TotalAmount", NamespaceManager)

.SetValue(total.ToString());

 

工作流或事件中处理表单

使用如下的命令可以生成表单的强类型定义

xsd myschema.xsd /c /l:cs /namespace:demo

然后再工作流或者事件中可以使用这个强类型处理表单文件,如

SPFile file = onWorkflowActivated1.WorkflowProperties.Item.File;

XmlTextReader reader = new XmlTextReader(file.OpenBinaryStream());

XmlSerializer serializer = new XmlSerializer(

typeof(SPWFiAExpenseReport));

SPWFiAExpenseReport fields = (SPWFiAExpenseReport)serializer

.Deserialize(reader);

double total = 0;

foreach (Expense expense in fields.Expenses)

{

total += expense.Amount;

}

file.Item["Total Again"] = total;

file.Item.Update();

时间: 2024-09-20 11:58:47

MOS2010中集成Infopath表单点滴的相关文章

用代码访问InfoPath表单内容

表单是MOSS的一个很重要的特性,特别是有了Form Services的支持后,我们在做表单解决方案的时候,经常会用到Infopath, 那么如何使用代码访问保存于SharePoint表单库中的InfoPath表单的内容,是必需知道的. 总结了下,有如下3种方式可实现代码对表单内容的访问: 1.提升表单模板属性 2.通过XmlDocument 对象对表单文件操作 3.反序列化表单数据架构 接下来,分别简单谈谈这3种方法的简单实现步骤 第一种方式: 提升表单模板属性表单操作: 在设计完表单模板,执

Infopath表单部署到Farm的方法

加入Infopath表单模板包含了代码,部署到Farm中需要一些特殊的步骤,具体如下两种方式:代码.PowerShell形式  代码形式 http://nader.elshehabi.com/2011/08/how-to-really-deploy-infopath-2010-forms-with-code-behind-as-a-feature/ http://sandeepnakarmi.com.np/2011/03/sharepoint-solution-to-deploy-infopat

PHP中常用的表单验证类

PHP动态网页开发中常用的表单验证类 <?php class class_post { //验证是否为指定长度的字母/数字组合 function fun_text1($num1,$num2,$str) { Return (preg_match("/^[a-zA-Z0-9]{".$num1.",".$num2."}$/",$str))?true:false; } //验证是否为指定长度数字 function fun_text2($num1,$

EasyUI中实现form表单提交的示例分享

这里给大家分享的是一段使用EasyUI中实现form表单提交的方法的核心代码,小伙伴们根据自己的需求补全form部分吧,希望大家能够喜欢. 代码如下: $('#form').form({ url : 'test/add.do', onSubmit : function() { parent.$.messager.progress({ title : '提示', text : '数据处理中,请稍后....' }); var gridValid = endEdit();// 子表退出编辑验证 if

Jquery中ajax提交表单几种方法(get、post两种方法)_AJAX相关

在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的方法.$get方式提交表单get() 方法通过远程HTTP ,下面我来介绍两个提交表单数据的方法. $get方式提交表单 get() 方法通过远程 HTTP GET 请求载入信息 格式 $(selector).get(url,data,success(response,status,xhr),dataType

select-如何在action的一段代码中读出不同表单的内容,并一一对应?

问题描述 如何在action的一段代码中读出不同表单的内容,并一一对应? 比如说,我在action中,用一个pulbic String select(...)来写, 是不够在里面同时写上6个sql语句吗? 解决方案 用sql中的union,将6个select连起来 string sql = "(select xxx from xxx) union (select yyy from yyy) union(...)" 解决方案二: 楼上的语句是什么意思?求解释

jsp 修改数据库信息-jsp中用户修改表单信息,从而数据库中相应的字段值也update

问题描述 jsp中用户修改表单信息,从而数据库中相应的字段值也update 点击图片1的"修改密码"按钮,会出现图片二的修改密码的表单.这个修改密码是由用户自己修改的,用户修改密码之后,表"userInfo"中的"userPwdz"字段值就相应变化了.我应该怎么写得到用户修改的密码参数,然后update表呢? 新手求指教,麻烦解答一下,感激万分!!!! 解决方案 sql语句写错了,update好像木有 星号,而且参数好像也不应该这样传进去,一般用

sharepoint-关于INFOPATH 表单的问题

问题描述 关于INFOPATH 表单的问题 兄弟的oa 系统是垃圾的SHAREPOINT2010 ,使用infopath 做表单.可是出现一个问题无法解决,就是如下图. 哪位高手可以给我指点啊,我百度,google 都无能为力了. 查询后台的log 日志如下: 08/20/2015 11:22:15.62 w3wp.exe (0x1DB4) 0x1244 InfoPath Forms Services Administration 82fk Warning Exception occurred

在jsp中提交form表单不能跳转进方法

问题描述 在jsp中提交form表单不能跳转进方法 我用的form表单提交的,jsp里 这样,js是function search(){ var myselec = $('#myselectHidden').val(); $.ajax({ type:'POST', data: {param:"myselec",isAll:"yes",param2:myselec}, url:'outQueryOption', success:function(data){ var