苔藓: 更新自定义列表

有许多好例子的更新通过 SDK 的自定义列表. 这里是另一个.

业务问题: 设计了 InfoPath 表单,使用户能够输入在线采购申请. 大埔请购单编号应该是传统序列基于整数值和自动计算.

业务解决方案: 创建一个包含两列的自定义 MOSS 列表: "ControlField" 和"ControlValue". 值列包含下一个采购请购单编号. 请注意该泛型"控制" 对未来控制字段可根据需要使用提供的命名约定.

技术解决方案: 创建的 InfoPath 客户端访问的 web 服务. 在 web 服务返回返回下一个采购请购单编号和更新列表中的值.

吸取的教训:

  • 当 InfoPath 窗体中添加此 web 服务作为数据源, 认为有必要将它转换为 udc 并将它存储到数据连接库.
  • 此外发现它有必要启用跨域脚本通过中央服务管理 // 应用程序管理 // 表单服务器配置.
  • 第一次试图访问 web 服务的形式, 它需要一段时间,有时, 它将超时时间. 我摆弄表单服务器配置中的设置,以扩大的超时设置和那似乎帮助.

代码:

使用 系统;
使用 System.Web;
使用 System.Web.Services;
使用 System.Web.Services.Protocols;
使用 Microsoft.SharePoint;
使用 System.Configuration;

[Web 服务(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
公众 PoService : System.Web.Services.Web 服务
{
公众 PoService () {

//取消注释以下行如果使用设计的部件
//InitializeComponent();
}

/// <摘要>
/// 从 sharepoint po 号码控制列表获得下一个 PO 编号.
/// 该列表中的增量 PO 编号.
/// </摘要>
/// <返回></返回>
[WebMethod]
公众 字符串 GetNextPoNumber()
{
字符串 SpPoControlSiteName; // 实际的 MOSS 站点承载的大埔控制列表名称.
字符串 SpPoControlListName; // 包含宝控件的实际苔藓列表的名称.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

字符串 nextPoReqNumber = "xyzzy";

使用 (SPSite 网站 = 新增功能 SPSite(SpPoControlSiteName))
{
使用 (SPWeb web = 网站。OpenWeb())
{

写入 currentList = web。列表[SpPoControlListName];

foreach (SPItem controlItem 在中 currentList.Items)
{

如果 (((字符串)controlItem["ControlField"]).等于("NextPoNumber"))
{
nextPoReqNumber = (字符串)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = 转换.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] int_nextPoReqNumber =;
controlItem.Update();
}

} // 定位, 读取和更新采购订单编号列表中.


} // 使用 spweb web = site.openweb()
} // 使用 spsite 网站 = 新 spsite("http://本地主机/瑞穗")

返回 nextPoReqNumber;

}
}

一个念头在“苔藓: 更新自定义列表

  1. KSP 写道::
    嗨保罗,
    我们有类似的情况你一提,但问题是我想要在负载平衡的服务器上使用此 web 服务。因此,如何在这种情况下处理并发请求或如何使新的请求等待和只有一个请求应更新直到列表编号然后所有其他请求应在问题请让我知道如何去实现这一目标.
    谢谢.
    答复

留言

您的电子邮件地址不会被公开. 必需的地方已做标记 *