在InfoPath中利用SharePoint的Lists Web Service向列表提交数据(续一)

在之前的文档之中已经详细说明了如何在InfoPath中利用SharePoint的Lists Web Service向列表提交数据,做了一个新建项目的Demo,文章链接如下:

在InfoPath中利用SharePoint的Lists Web Service向列表提交数据

但是在现实的业务流程中,还会有修改和删除的需求,那么这些该如何操作呢?下面将会一一讲解。

首先先说一下修改,修改顾名思义是在已有的记录上进行修改,那么第一步就应该取到待修改记录,得有一个Key来关联,一般来说都用ID做Key,弄清楚这个以后我们就可以来建立修改的XML文件了,我的列表还是用之前的两个列表,所以我用记事本建立了一个名为“修改项目”的XML文档,当中的字段名和列表中字段名的Internal Name一一对应,文档内容如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <Batch OnError="Continue">
3 <Method ID="2" Cmd="Update">
4 <Field Name="ID"></Field>
5 <Field Name="Title"></Field>
6 <Field Name="Money"></Field>
7 <Field Name="Month"></Field>
8 <Field Name="Year"></Field>
9 </Method>
10 </Batch>

与“添加新项目”的XML文档相比多了一个ID字段,这个字段用来关联修改的是哪一条记录,然后接下来的操作和新建几乎一模一样,这里就不详细写出来了。

好了,修改的差不多了,接下来就是删除了,删除也得知道是哪一条记录,所以也得需要ID,但是是否还需要其他信息呢?当然不需要了,都要删除了,其他的信息都没用了,我就用记事本建立了一个名为“删除项目”的XML文档,文档内容如下:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <Batch OnError="Continue">
3 <Method ID="3" Cmd="Delete">
4 <Field Name="ID"></Field>
5 </Method>
6 </Batch>

接下来调用Lists Web Service删除就可以了。

但是现在又一个问题,因为所有的Field Name都是英文的,如下图,另外有一些复杂列表的Field的Internal Name并不是所有的用户都能够看懂。

我们能否将其改成中文的呢?答案是肯定的,只需要修改一下之前的XML文档,以“更新项目”的XML文档为例,只需要为Field节增加一个属性DisplayName,修改后的XML文档如下:

 1 <?xml version="1.0" encoding="GBK"?>
2 <Batch OnError="Continue">
3 <Method ID="2" Cmd="Update">
4 <Field Name="ID" DisplayName="ID"></Field>
5 <Field Name="Title" DisplayName="标题"></Field>
6 <Field Name="Money" DisplayName="金额"></Field>
7 <Field Name="Month" DisplayName="月份"></Field>
8 <Field Name="Year" DisplayName="年份"></Field>
9 </Method>
10 </Batch>

这里有一个小细节需要注意,就是“UTF-8”编码里面不能直接写中文,会报如下的错误:

需要改成“GBK”编码格式,然后就可以了,预览一下更新的部分,如下:

只需要隐藏掉Name那一列就可以了。

但是我们对一个明细表做操作要做好多数据连接,新建、更新、删除各两个,能不能精简一点呢?当然可以,我们可以将几个XML文档合并成一个,然后在调用Web Service的时候将不同的节赋给updates参数就可以了,我将新建、更新和删除这三个XML文档合并如下:

View Code
 1 <?xml version="1.0" encoding="GBK"?>
2 <Management>
3 <New>
4 <Batch OnError="Continue">
5 <Method ID="1" Cmd="New">
6 <Field Name="Title" DisplayName="标题"></Field>
7 <Field Name="Money" DisplayName="金额"></Field>
8 <Field Name="Month" DisplayName="月份"></Field>
9 <Field Name="Year" DisplayName="年份"></Field>
10 </Method>
11 </Batch>
12 </New>
13 <Update>
14 <Batch OnError="Continue">
15 <Method ID="2" Cmd="Update">
16 <Field Name="ID" DisplayName="ID"></Field>
17 <Field Name="Title" DisplayName="标题"></Field>
18 <Field Name="Money" DisplayName="金额"></Field>
19 <Field Name="Month" DisplayName="月份"></Field>
20 <Field Name="Year" DisplayName="年份"></Field>
21 </Method>
22 </Batch>
23 </Update>
24 <Delete>
25 <Batch OnError="Continue">
26 <Method ID="3" Cmd="Delete">
27 <Field Name="ID" DisplayName="ID"></Field>
28 </Method>
29 </Batch>
30 </Delete>
31 </Management>

现在就精简很多了吧,今天就写这么多吧,关于这个问题接下来还会有一些更新。

posted @ 2011-12-14 18:07  Statmoon  阅读(639)  评论(0编辑  收藏  举报