在MOSS中开发和部署Infopath
同时也可以将Infopath表单模板在web页面上来呈现和填写。在MOSS中提供了 InfoPath Forms Services功能可以方便的发布Infopath表单,当然在Web上使用Infopath在功能上会有一些限制。
本文要实现功能如下:编写一个Infopath表单,发布到Moss中(嵌入到原有的MOSS页面中),当提交时将表单中的数据保存到数据库中去。(模拟一个用户编辑功能)
一、前期准备
要开发一个包含C#代码的Infopath表单有两种方式:
1、安装VSTO,装好之后可以直接在VS2005 Team System中编辑表单模板和编写C#代码
2、在 添加/删除程序中修改VS2005的安装,添加安装 VSTA(Visual Studio 2005 Tools for Applications)
我这里采用的是第二种方式
二、开发Infopath表单模板
1、打开Infopath新建一个表单模板:UserEdit
2、修改开发部署环境:
2.1 在工具-〉选项-〉设计中将语言改为C#
2.2 在工具-〉表单选项-〉编程中将语言改为C#
2.3 在工具-〉表单选项-〉兼容性-〉浏览器兼容(为了将表单可以发布在web页面上)
2.4 安全和信任
选择“工具”-〉“表单选项”-〉“安全和信任”
因为我们在表单中使用了C#代码,所以在“安全级别”方面,要选择“完全信任”:
与此同时,因为表单有代码,而且安全级别设置为“完全信任”,相应的,“表单模版签名”要选择“为此表单模版签名”。在这个演示中,我们使用windows自己的证书。即选择“创建证书”:
2.5 设置在web中可以显示哪些表单按钮
在这里我们一定要设置提交按钮,在下面编写表单时,对控件的验证只有当点击提交按钮时才会执行。如果是保存按钮会忽略验证强制保存的
3、编写表单模板
页面设计部分比较简单,都是一些所见即所得的操作,在设计的时候也可以给页面控件加上验证,比如不能为空,正则验证等,功能还是很强大的。
下图是演示的页面布局和简单的验证操作,具体步骤我就不详细列举了:
有一个要注意的地方就是Infopath中不支持password格式的输入框,在google中查了一下,好像目前只能将字体设为Wingdings来部分达到效果
4、编写代码
在工具-〉编程-〉Loading事件会直接打开VS2005进行代码编写的。
这里的代码编写和普通的Asp.Net比较类似,要注意的主要有两个方面:
a、对Infopath中的表单控件值的存取都要使用类似xml的方式:
MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtID", NamespaceManager).SetValue(memberId);
通过内置的MainDataSource对象来存取
b、使用页面对象的方法(如取得页面的输入参数):
memberId = System.Web.HttpContext.Current.Request.QueryString.Get("ID");
当然首先要添加System.Web的引用
FormEvents_Loading事件的代码如下:
public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
string memberId = string.Empty;
try
{
memberId = System.Web.HttpContext.Current.Request.QueryString.Get("ID");
if (string.IsNullOrEmpty(memberId))
{
memberId = "1";
}
MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtID", NamespaceManager).SetValue(memberId);
using (SqlConnection connection = new SqlConnection("server=***;User ID=***;Password=***;database=****;Connection Reset=FALSE"))
{
SqlDataAdapter sqlData = new SqlDataAdapter("select * from member where memberid=" + memberId, connection);
DataTable dt = new DataTable();
sqlData.Fill(dt);
if (dt.Rows.Count > 0)
{
MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtName", NamespaceManager).SetValue(dt.Rows[0]["Name"].ToString());
MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtPassword", NamespaceManager).SetValue(dt.Rows[0]["Password"].ToString());
MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtPhone", NamespaceManager).SetValue(dt.Rows[0]["Tel"].ToString());
}
}
}
catch (Exception ex)
{
MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtMessage", NamespaceManager).SetValue(ex.ToString());
}
}
代码比较简单:一开始取得前一个页面传递的ID值,然后根据这个ID从数据库中取得用户信息,显示在Infopath的控件中供修改。
同理,我们还要写一个submit事件,当提交时将修改后的值保存到数据库中去:
public void FormEvents_Submit(object sender, SubmitEventArgs e)
{
try
{
using (SqlConnection connection = new SqlConnection("server=****;User ID=****;Password=****;database=****;Connection Reset=FALSE"))
{
string strSql = "update member set name='" +
MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtName", NamespaceManager).Value +
"', password='" + MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtPassword", NamespaceManager).Value +
"', tel='" + MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtPhone", NamespaceManager).Value
+ "' where memberid=" + MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtID", NamespaceManager).Value;
;
SqlDataAdapter sqlData = new SqlDataAdapter(strSql, connection);
DataTable dt = new DataTable();
sqlData.Fill(dt);
}
// 如果提交操作成功,则设置
e.CancelableArgs.Cancel = false;
//System.Web.HttpContext.Current.Response.Write("<script language='javascript'>alert('更新成功!');</script>");
}
catch (Exception ex)
{
MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtMessage", NamespaceManager).SetValue(ex.ToString());
}
}
三、发布和部署Infopath
表单开发好之后,下面就是要把它部署到MOSS上面去了
如果表单中没有代码,那可以非常方便的把模版发布到文档库中。如果有了代码,那就只能有一种方式,就是需要管理员审批。原理是,表单作者将表单库发布到SharePoint上,其实是把表单发布到一个管理员可以访问到的地方(比如网络共享服务器)。管理员需要将表单模版上传到管理中心的“管理表单”,确定将表单在“网站集”激活、可用。最后,管理员,需要在“网站集”上激活相应的表单模版。这样的过程虽然非常复杂,但是对于管理员维护表单模版非常方便。将模版的使用及开发、审核分开。
具体步骤如下:
1、在Infopath中发布
文件-〉发布:
具有或不具有Infopath Forms Services的Sharepoint服务器
然后一直下一步(选择一个列表放置这个Infopath表单模板)
一定要选择:使用户可以通过浏览器填写此表单
2、激活此表单
2.1 进入MOSS的管理中心-〉应用程序管理-〉上载表单模板:选择我们在前一个步骤中发布的表单模板,以后当修改此表单后只需要在这一步骤中选择升级就可以了,不需要进行2.2的操作。
2.2 进入个人开发的MOSS网站 网站操作-〉网站设置-〉网站集功能 激活UserEdit这个功能,激活后会自动将这个表单模板放到 个人网站的/FormServerTemplates(表单库模板)目录下
(之后可以添加此类型的表单库,在表单库设置中:高级-〉允许管理内容类型 显示为网页,从现有网站内容类型添加。此演示中不需要使用此功能)
3、在MOSS页面中嵌入此表单模板
常规的MOSS中的表单都是作为一个单独的页面呈现的,如果需要把它嵌入在原有的MOSS页面中,需要进行一些特殊处理
3.1 在web.config中注册:
3.2 在MOSS页面的头部加入引用:
3.3 在页面需要的位置加入表单:
加入之后的效果如下:
也可以进行正常的验证操作了,当提交时会把值保存到数据库中。
本文转自:http://www.cnblogs.com/firstyi/archive/2008/04/06/1139195.html永春阁的博客
转载于:https://www.cnblogs.com/ericgisser/archive/2010/03/08/InfoPath_FormTempletes.html
在MOSS中开发和部署Infopath相关推荐
- 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一 ...
- SQL Server Integration Services 包的开发与部署初探
说到数据库之间的数据同步,我们经常会结合的SQL Server 2000中的DTS和作业功能来实现按时.按条件的数据传输.但是SQL Server 2005 以后,不再支持SQL Server 200 ...
- [转】:VS 2010 : 如何开发和部署Outlook 2010插件(Add-in)
VS 2010 : 如何开发和部署Outlook 2010插件(Add-in) 转自: http://guofblog.blog.163.com/blog/static/168088614201062 ...
- git上托管的代码如何部署在阿里云上_居然仅用浏览器搞定Spring Boot应用的开发与部署...
最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一把全新的开发模式!虽然中间也碰到了一些问题,但整体的体验透露着未来感,因为整个过程都不需要使用我们最常用的IDEA,仅依靠浏览器就把一个Spri ...
- 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发...
<ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...
- MSDN Visual系列:在MOSS中创建一个BDC实体
原文:http://msdn2.microsoft.com/en-us/library/bb410048.aspx 业务数据目录--BDC(Business Data Catalog)是MOSS中 ...
- MathWorks的AI之路:面向工业场景,打通开发到部署的全链路
作者 | 阿司匹林 AI正在快速发展,并在更多的领域落地.对于MATLAB和Simulink的开发商MathWorks来说,把握AI的机会,显得尤为重要. 不少人对MATLAB等的印象依然停留在学校期 ...
- 用对方法,开发与部署深度学习原来如此简单……
相信大部分人都会谈癌色变,正如我们所知的一样,晚期癌症患者的生存率低于 20%,而尽管早期患者可以被治愈,且治愈率高达 90% 以上,但因为大部分癌症早期起病隐匿,更重要的原因在于受限于现有医疗水平, ...
- 【Smobiler企业APP开发之一】开发环境部署
最近研究了下Smobiler-.net移动开发,对于做企业APP开发Smobiler还是够用的,况且是完全使用C#进行编程,对于使用C#进行程序设计的程序员来说还是很容易上手的. 本章节主要介绍Smo ...
最新文章
- PHP随机字符串生成器
- JavaScript存在的原因
- 职高计算机教学案例 反思,关于职高数学优质课教学案例的研究与反思
- Algs4-1.5.1使用quick-find算法处理序列
- xml约束和实际场景使用
- mysql8.0.18用什么jdk_基础命令、cake-install、mysql远程登录、JDK安装
- PHP面试题:windows平台, Apache Http Server启动失败, 排错思路是什么?
- JavaScript 数组详解
- 谷歌推出了其首款触屏笔记本电脑
- babel原理_带你了解 snowpack 原理,你还学得动么(下)
- iphone悬浮球怎么设置_OPPO手机怎么截屏?大部分的人只会两种,包括你吗?
- html猜随机数游戏,用js制作简易计算器及猜随机数字游戏
- 网页header 的 meta使用
- vivado dds IP核笔记
- 凸优化有关的数值线性代数知识 1矩阵结构与算法复杂性
- javashop源码百度云,java电商系统源码分享,Javashop多用户商城源码
- 2018华为网络技术大赛
- GD32F130之DMA
- linux 平台下 MATLAB 打不开图形界面
- html怎么创建页面书签链接,如何:在“设计”视图中为 Web 窗体页插入 HTML 超链接和书签...
热门文章
- Python zip*用法(一行代码实现矩阵的旋转)
- 01.机器学习的简介
- Barracuda - Framework Comparisons(翻译)
- 用 DELPHI 为 MQL5 编写 DLL 指南
- 双功能交联剂丨Lumiprobe 磺基花青7二羧酸研究
- iWatch 开发 4: 实现iWatch 与 iPhone 之间数据发送与接收
- 2.给出距离1900年1月1日的天数,求日期
- 【智能控制实验】基于MATLAB的BP神经网络设计
- 亵渎小说介绍_从PHP过渡到:亵渎神灵,虚张声势还是常识?
- r软件自动化测试,App自动化测试工具Airtest