c# – 使用自定义工作流活动更新同一网站集内不同网站中的列表项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 使用自定义工作流活动更新同一网站集内不同网站中的列表项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3015字,纯文字阅读大概需要5分钟。
内容图文
![c# – 使用自定义工作流活动更新同一网站集内不同网站中的列表项](/upload/InfoBanner/zyjiaocheng/778/ba8a05be6b1b4039b1cb5a4d963a7557.jpg)
我正在尝试使用自定义工作流操作更新其他站点中的列表.这些网站位于同一网站集中.我已成功将自定义操作部署到SharePoint服务器.当我运行包含此操作的工作流时,工作流成功完成且没有错误.我确定该操作正在执行,因为我在工作流历史记录日志中看到包含service.LogToHistoryList()的行的结果,并且它们包含期望的值.问题是目标列表项实际上没有更新.下面是用于更新列表项的代码部分.
try
{
ISharePointService service = (ISharePointService)executionContext.GetService(typeof(ISharePointService));
service.LogToHistoryList(this.WorkflowInstanceId, SPWorkflowHistoryEventType.WorkflowComment, 0, TimeSpan.Zero, "Debugging Output", SiteUrl, string.Empty);
service.LogToHistoryList(this.WorkflowInstanceId, SPWorkflowHistoryEventType.WorkflowComment, 0, TimeSpan.Zero, "Debugging Output", List, string.Empty);
service.LogToHistoryList(this.WorkflowInstanceId, SPWorkflowHistoryEventType.WorkflowComment, 0, TimeSpan.Zero, "Debugging Output", Column, string.Empty);
service.LogToHistoryList(this.WorkflowInstanceId, SPWorkflowHistoryEventType.WorkflowComment, 0, TimeSpan.Zero, "Debugging Output", Value, string.Empty);
service.LogToHistoryList(this.WorkflowInstanceId, SPWorkflowHistoryEventType.WorkflowComment, 0, TimeSpan.Zero, "Debugging Output", updateCol, string.Empty);
service.LogToHistoryList(this.WorkflowInstanceId, SPWorkflowHistoryEventType.WorkflowComment, 0, TimeSpan.Zero, "Debugging Output", updateVal, string.Empty);
ClientContext clientContext = new ClientContext(SiteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle(List);
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View><Query><Where><Geq><FieldRef Name='"+Column+"'/>" +
"<Value Type='String'>"+Value+"</Value></Geq></Where></Query><RowLimit>1</RowLimit></View>";
ListItemCollection collListItem = oList.GetItems(camlQuery);
clientContext.Load(collListItem);
clientContext.ExecuteQuery();
foreach (ListItem oListItem in collListItem)
{
oListItem[updateCol] = updateVal;
oListItem.Update();
clientContext.Load(oListItem);
clientContext.ExecuteQuery();
}
return ActivityExecutionStatus.Closed;
}
catch (Exception ex)
{
ISharePointService service = (ISharePointService)executionContext.GetService(typeof(ISharePointService));
if (service == null)
{
throw;
}
service.LogToHistoryList(this.WorkflowInstanceId,SPWorkflowHistoryEventType.WorkflowError, 0, TimeSpan.Zero,"Error Occurred", ex.Message, string.Empty);
return ActivityExecutionStatus.Faulting;
}
解决方法:
感谢Yevgeniy,感谢您的有益评论.我能够使用Yevgeniy建议的服务器对象模型找到解决方案. Thanks also to this blog post.以下代码解决了该问题.
using (SPSite _site = new SPSite(SiteUrl))
{
using (SPWeb _web = _site.OpenWeb())
{
SPList oList = _web.Lists[List];
SPQuery _query = new SPQuery();
_query.Query = "<Where><Eq><FieldRef Name='"+Column+"' /><Value Type='Text'>"+Value+"</Value></Eq></Where>";
SPListItemCollection _itemCollection = oList.GetItems(_query);
if (_itemCollection.Count > 0)
{
_web.AllowUnsafeUpdates = true;
foreach (SPListItem Item in _itemCollection)
{
Item[updateCol] = updateVal;
Item.Update();
}
_web.AllowUnsafeUpdates = false;
}
}
}
内容总结
以上是互联网集市为您收集整理的c# – 使用自定义工作流活动更新同一网站集内不同网站中的列表项全部内容,希望文章能够帮你解决c# – 使用自定义工作流活动更新同一网站集内不同网站中的列表项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。