上一篇摘要:http://www.cnblogs.com/dosboy/archive/2007/11/30/977535.html

上一篇主要内容:

讨论了InfoPath如何利用VSTA来把表单数据按行写入数据库,这个数据库作者为了方便,以列表库代替。




接上篇: 要点4: 如何在InfoPath的VSTA下编写代码,

"工具"->"提交选项"->"使用代码自定义操作"->"编辑代码",

在提交选项中插入以下自定义提交代码:

[ InfoPath应用场景:库存管理 ] 在InfoPath Form Service利用WSS Web Service技术,通过VSTA代码把复杂表单写入SharePoint列表数据库 (二) public void FormEvents_Submit(object sender, SubmitEventArgs e)
        }

代码中使用了一个方法,FormSave(),这是一个自定的方法,其作用就是:

1 把表单提交进入表单库,
    如果是新建表单,使用不允许覆盖的提交方式.
    如果是更新以前的表单,使用可以覆盖的提交方式.

2 把表单的记录更新进入列表库,


    代码通过遍历表单中重复表的每一行数据,如果该行数据在"列表"中可以找到,即有相同的单号\名称\规格,那就采用Update方法,如果找不到,那就采用新建New.

   然后代码继续遍历"列表"中入库单号等于该入库单的项,如果列表中的项,新提交的表单中没有,说明使用者在使用InfoPath的时候把它删除了,那么就从"列表"中删除它!

3 错误处理,

[ InfoPath应用场景:库存管理 ] 在InfoPath Form Service利用WSS Web Service技术,通过VSTA代码把复杂表单写入SharePoint列表数据库 (二) private void FormSave()
        }


在表单的启动事件,用来设置IsNew变量的状态。

[ InfoPath应用场景:库存管理 ] 在InfoPath Form Service利用WSS Web Service技术,通过VSTA代码把复杂表单写入SharePoint列表数据库 (二)   public void FormEvents_Loading(object sender, LoadingEventArgs e)
        }



代码事项:使用了三个表单字段来进行状态维护,IsNew,SaveError,ErrInfo,

1 isNew,用来判断这个表单操作,是不是新建.平时当然可以使用表单的this.New来判断,但是由于是没有使用"保存",而使用了了提交到表单库的操作,你提交进去表单库后,this.New不会变成False.

2 SaveError,判断整个操作是否成功,如果有一个记录没有成功更新,也为True;

3 ErrInfo,如果失败,就显示失败信息,这个在表单中有一个文本框与之帮定.



要点5:事件处理程序:处理删除表单表单操作

  表单内部中的更新(插入、删除、更新)都可以反应在“列表”中,那么使用者如果删除表单文件呢?
   大家可以自己思考哦。

相关文章:

  • 2021-06-01
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2022-02-21
  • 2021-11-08
  • 2021-12-20
猜你喜欢
  • 2021-07-03
  • 2022-12-23
  • 2021-06-14
  • 2021-08-22
  • 2022-01-29
  • 2021-05-27
  • 2021-08-31
相关资源
相似解决方案