目的:这两天我在学习MOSS中关于infopath的内容,多少遇到了些问题,下面总结下我的学习心得,希望新手们能够少走弯路,快速入门。

infopath2007简单说明:

infopath services它是一种服务器技术,用户可以在浏览器上直接查看表单,填写表单,重要的是用户可以不安装info path客户端。企业可以利用它作为数据采集和流程审批的基础。infopath07比03版本最大的区别就是能够脱离infopath环境,而且能够发布到浏览器上。infopath表单可以作为界面设计器以及数据展示交互,它包含了非常丰富的控件,还包含了控件的规则以及数据验证,当用户提交表单时会根据生成js脚本来验证数据的正确性,而且是无刷新的,非常不错。

infopath表单的创建:

infopath表单可以是完全无代码的表单,也可以是有托管代码的InfoPath表单。带代码的表单需要一个名叫VSTA的工具来开发。这里我想讲下带有代码的表单。
   
      创建带代码表单的方式:

1:利用office组件infopath定制表单,通过VSTA编写相关的逻辑代码;

2:通过VS05或者是08建立infopath表单项目。

下面主要讲第一种方式的应用及需要注意的地方。

第一部分:创建带有代码的表单需要注意的几个方面:

1:表单的兼容性,表单最终是展示给用户看的,而展现形式大部分都是以WEB方式,所有创建的表单要能在浏览器中显示。步骤如下:

1):设计任务-检查设计方案,如下图所示,这里同时可以验证程序是否正确。

2):在表单选项窗口中,确保图中红色部分打上勾。

2:表单编程语言的设置,工具-表单选项-编程,好下图好示,在表单模板代码语言中选好相应语言,默认是VB,设置好代码存放位置。

3:表单信任级别及证书,要想WEB用户能够顺利的访问我们的表单模板,需要调整信任级别和选择或者是创建证书。步骤:工具-表单选项-安全和信任,去掉自动确定级别,手动选中下面的完全信任。同时,“表单模版签名”要选择“为此表单模版签名”。在此处,我们使用windows自己的证书。即选择“创建证书”:确认即可。

4:如何查看已经创建成功且已经激活过的表单模板路径,即以后XmlFormView的属性XsnLocation。我们可以借用sharepoint designer查看,具体操作不多说,效果好下图:

5:后台代码如何访问表单中的表单项?一般用asp.net写程序都是用this.控件ID,来操作,而在MOSS中是通过MainDataSource.CreateNavigator()返回一个XPathNavigator对象,从而得到文档的描述,之后使SelectSingleNode进行节点选择。XML代码如下:进行节点匹配时的规则是这样的:/my:myFields/my:field1默认情况下更改最好的field1即可。

<?xml version=""1.0""?>
   <?"?>
<?"http://www.w3.org/2001/XMLSchema-instance""
xmlns:my=""http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-01-12T07:36:42""
xmlns:xd=""http://schemas.microsoft.com/office/infopath/2003"" xml:lang=""zh-cn"">"r"n"t
<my:field1>2009-1-1314:49:34</my:field1>"r"n</my:myFields>

第二部分:创建带代码表单的步骤:

1:在infopath2007中创建一个空的表单,可以修改数据源的组名,默认为myFields。

2:设置好表单的编程语言,代码位置,以及浏览器兼容性。

3:代码的编写:双击提交按钮,单击"编辑表单代码",如果系统安装了VSTA,则会打开VSTA界面。单击工具菜单中的"工具"-编程-Loading事件,最终的代码如下:


public void InternalStartup()
        {
            ((ButtonEvent)EventManager.ControlEvents["CTRL2_5"]).Clicked += new ClickedEventHandler(CTRL2_5_Clicked);
            EventManager.FormEvents.Loading += new LoadingEventHandler(FormEvents_Loading);
        }

public void CTRL2_5_Clicked(object sender, ClickedEventArgs e)
        {
            // 在此处编写代码。
            try
            {

string str = "现在的时间是:"+DateTime.Now.ToString();
                MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:field1", NamespaceManager).SetValue(str);
            }
            catch (Exception ex)
            {
                MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:field1", NamespaceManager).SetValue(ex.Message);
            }
            
        }

public void FormEvents_Loading(object sender, LoadingEventArgs e)
        {
            // 在此处编写代码。
            try
            {

string str = DateTime.Now.ToString() ;
                MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:field1", NamespaceManager).SetValue(str);
            }
            catch (Exception ex)
            {
                MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:field1", NamespaceManager).SetValue(ex.Message);
            }
        }

代码说明:

1:InternalStartup:初始化和绑定事件处理程序。

2:FormEvents.Loading 事件在加载了表单模板之后、初始化任何视图之前发生。

3:表单项相关:

//返回一个XPathNavigator对象
XPathNavigator xn =this.MainDataSource.CreateNavigator();
           //找到对应结点;
XPathNavigator field1 =xn.SelectSingleNode("/my:myField/my:field1",this.NamespaceManager);
          //为结点设置值;
field1.SetValue("hello world!");

4:表单还有其它一些事件,具体的可查阅下MSDN。

第三部分:创建一个表单库。如何新建一个表单库我就不啰嗦了,值得注意的是在之前讲过infopath2007能够脱离infopath环境,让用户可以在浏览器中操作表单,默认表单打开方式是infopath,实现步骤:在MOSS网站中点击"网站操作"

-查看所有网站内容-点击创建的表单库-设置-表单库设置-高级设置-打开启用了浏览器的文档  设置为"显示为网页 "。如下图:

第四部分:发布表单。带有代码的表单是需要管理审批才能使用的,大概步骤如下:

1:可以利用infopath本身的发布功能,一步一步来应该问题不大;

2:打开MOSS管理中心-应用程序管理-上载表单模板,选择之前保存的表单模板文件,建议在上载之前先验证下表单模板,通过验证后再开始上载,上载成功后会转到"管理表单模板"页面,找到刚才的表单,选择表单下拉框下的"激活到网站集",到此需要管理员审核的表单已经发布成功而且已经激活,也就是说用户可以在网站中使用这个表单模板了。

3:在自定义页面中添加表单,表单是以模板形式展现的,它不是一个web part,所有需要有一个容器来存放它,这里可以利用xmlformview,这个控件是需要部署的,怎么部署这里不是重点,在控件库中导入成功后,就可以在页面中使用,在自定义页面添加一个xmlformview控件,然后它有一个最重要的参数XsnLocation,它是指模板文件的路径,这个路径可以通过sharepoint desinger来查看,具体方法在文章最上面已经有说明。这个控件的主要参数说明如下:

属性分类: 属性名称: 含义:
功能 ShowHeader 显示上面的工具栏
ShowFooter 显示下面的工具栏
EditingStatus

编辑状态设置:Init,Closed,Edting,

在页面中设置成Edting就OK。

数据绑定 XsnLocation

表单模板的地址

(形如:http://jiangmin:8000/FormServerTemplates/Code9release.xsn)

总结:上面文章从创建infopath表单,发布表单,审核表单,应用表单比较全面的说明了infopath表单带托管代码的具体应用,大家有什么好的做法,希望多多指教!

带托管代码的infopath2007表单创建, 发布,应用(MOSS开发)相关推荐

  1. [MOSS开发]:带托管代码的infopath2007表单创建, 发布,应用

    目的:这两天我在学习MOSS中关于infopath的内容,多少遇到了些问题,下面总结下我的学习心得,希望新手们能够少走弯路,快速入门. infopath2007简单说明: infopath servi ...

  2. 带有托管代码的InfoPath2007表单模版发布到SharePoint表单库(浏览器方式查看)

    在本篇文章中,将与大家分享如何将一个带有托管代码(manage code)的InfoPath2007表单模版发布到SharePoint Server2007的表单库中,并使得最终用户可以通过浏览器方式 ...

  3. JEECG 3.6 自定义表单版本发布,智能快速开发平台

    JEECG 3.6(智能快速开发平台) 自定义表单版本发布 平台介绍: JEECG(J2EE Code Generation),一款基于代码生成器的JAVA快速开发平台,集成强大代码生成器和在线开发机 ...

  4. InfoPath 系列:表单的发布与共享

    上一篇中我们简单的介绍了如果快速创建一张表单,今天继续介绍表单的共享与发布. 先来回顾一下上一篇中创建的表单: 就是这个了,在INFOPATH中有以下几种发布或共享的方式. 1.发布至网络位置或文件共 ...

  5. 用dedecms自定义表单创建简易自助预约系统

    建站往往需要根据客户的需求来增加相应的功能,比如预约.平时用比较多的是织梦系统,那么如何用dedecms自定义表单创建简易自助预约系统呢? 进入dedecms后台,左侧菜单中依次点击"核心& ...

  6. easyui复杂表单_jQuery EasyUI 表单 – 创建树形下拉框(ComboTree) | 菜鸟教程

    jQuery EasyUI 表单 - 创建树形下拉框 树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox).它可以作为一个表单字段进行使用,可以提交给远程服务 ...

  7. 基于vue Ant-Design 的表单设计器,快速开发

    基于vue Ant-Design 的表单设计器,快速开发https://gitee.com/kcz66/k-form-design/ 表单设计器 k-form-design image 简介 参考项目 ...

  8. JeecgBoot 2.1 Online表单版本发布,基于SpringBoot+AntDesign的快速开发平台

    项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT.强 ...

  9. html5摒弃的标记,全新改进的HTML5表单创建

    经历了12年之久,万维网的核心语言(HTML或超文本标记语言)终于迎来了HTML5主要修订版本.虽然万众期待的版本仍处于测试阶段并且没有宣布正式推出的日期,HTML5的网页设计师和程序员已经就有关最新 ...

  10. python按某列拆分excel表格_python带格式拆分excel表单,copy库完美搞定

    python拆分excel表单,生成单独的excel文件,网上这方面的文章很多.但大多只讲主功能如何实现,让拆分后的表保持和原表单一致的格式,则鲜有人讲.本文通过调用copy库,完美实现带格式拆分表单 ...

最新文章

  1. CSS溢出-x:可见; 和溢出-y:隐藏; 导致滚动条问题
  2. 个人作业7 第一阶段SCRUM冲刺(七)
  3. 从零基础入门Tensorflow2.0 ----四、12. tf_data基础api使用
  4. cocostudio中的一些控件的使用
  5. uci2019计算机录取,加州大学公布2019年最新录取数据!
  6. qt mysql图形界面_qt数据库界面
  7. 窥尽大数据背后被遮掩起来的财富
  8. zblogphp登录和注册_zblog如何设置会员注册功能
  9. pat甲级1014柳神代码解析自学复盘用
  10. python requests+unittest+beautifulreport+jenkins实现接口自动化(中)
  11. The table ‘xxxx‘ is full
  12. ble 读写特征值特征值_ap.readBLECharacteristicValue 读取低功耗蓝牙设备特征值中的数据 - 支付宝 Alipay JSSDK 开发文档...
  13. 开源物联网应用开发平台列表
  14. PHP初中级面试题收集
  15. kail防火墙和端口开放相关操作
  16. python 单位根检验代码_Python ADF 单位根检验 如何查看结果的实现
  17. oracle加上默认值,Oracle创建表,并添加默认值和备注
  18. 突破,中科大郭光灿院士团队首次实现多模式量子中继
  19. 梦想就是踮起脚尖可以够着的地方,享受追梦的快乐
  20. Cutterman插件安装及使用说明

热门文章

  1. 智能指针的标准之争:Boost vs. Loki (转)
  2. 这几天加班熬夜把所有Python库整理了一遍,非常全面!
  3. Windows常见的几种权限维持
  4. 一张图带你解读--如何从零开始学习接口自动化
  5. 全球及中国石头纸行业发展动态与投资现状分析报告2022版
  6. 关于安卓/苹果H5移动端上传视频
  7. matlab批量修改图片的大小_matlab批量修改图片大小
  8. 手动安装hadoop集群
  9. 麻省理工学院公开课:信号与系统:模拟与数字信号处理 调幅演示
  10. 电子工程师12个忠告,新手老鸟都值得一看!