您的位置:首页 > 运维架构

InfoPath 2010调用REST的一个小应用

2011-05-17 09:45 375 查看
在做InfoPath 2007相关的项目中,我们经常使用InfoPath来调用SharePoint 2007的Web Service. 那么如今SharePoint 2010支持了REST,我们可以尝试调用REST。

需求:自定义一个SharePoint 2010 列表的表单。要求在用户输入“Title”时,检查一下当前列表中是否有相同Title的Item存在,如果存在的话,禁止表单的提交。

思路:使用InfoPath 2010调用REST实现。首先通过REST去列表中查询是否有title等于当前表单填写的Item,如果有的话,返回结果,并且禁止提交。如果查询不到,则允许提交。

第一步,自定义表单。点击列表项目的”自定义表单”,然后对表单做一些简单的处理,如下图。(列表的列有:Title, MyDate以及Query Result,这个是记录title的REST查询的返回结果的)









第二步,添加数据源. 我们需要添加一个“接收数据(Receive Data)”的数据源。我现在需要查询的是列表TestList,所用REST的URL如下: “http://servername/_vti_bin/listdata.svc/TestList





第三步,对InfoPath的Rule添加逻辑。

选中表单中的Title文本框,添加一个“当字段的值发生变化时(This Field Changed)”使用“查询数据(Query for Data)”.Rules的逻辑和调用Web Service(/article/7036199.html)时的逻辑基本类似:拼接REST, 执行查询并且返回结果。

拼接REST:

concat("http://<ServerName>/_vti_bin/listdata.svc/TestList", "?$filter=Title eq ", "'", Title, "'")


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }





执行查询:这里只需要做一个指向于Data Connection的“Query for data”的活动即可。





返回查询结果:(我这里对返回的结果的几个属性做了拼接,并且把结果的值返回到Query Result这个文本中)





第四步,增加验证。

我的验证逻辑是:如果查询没有返回结果,表示相同Title的Item不存在;如果有返回结果,表示存在相同Title的Item。对Title的文本控件在增加一个验证(validating)的逻辑:

Condition: Qurey Result is not blank.

ScreenTip: The item has existed.

第五步,发布表单。

接下来,就去验证你的逻辑吧!





注意:

1.在使用SharePoint 2010的REST的时候,首先要安装ADO.Net 3.5SP1:http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=3e102d74-37bf-4c1e-9da6-5175644fe22d

2.在你拼接REST时,你最好先在URL测试一下,检查是否能用。

参考:

http://blogs.msdn.com/b/infopath/archive/2010/02/11/add-a-dynamic-map-to-a-contact-form-using-rest-web-services.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐