项目未添加到列表中(来自代码)

时间:2011-11-29 19:37:55

标签: sharepoint-2010

我们这里有一些奇怪的问题。我们有功能事件接收器,我们正在创建自定义字段 - >内容类型 - >名单。之后,添加一个默认项目。在我的VM上它工作正常,但在进入pre-prod环境后,我们得到了这种奇怪的行为,没有异常或日志错误。 首先,项目有时只是创建,没有跟踪发生的事情。大部分都没有创建。我甚至经历过这样的事情:当我激活功能时,我去了列表,所以那里的项目,但刷新后它就消失了! 我们试图在那里设置一些Thread.Sleep()循环(在调试时,item在 Items 集合中,但列表的 ItemsCount 属性始终显示为0)。 现在我的想法是错的。这不是执行时间(也许)。看起来,由于某种原因,SP在创建真实之前杀死了SPItem.Update,我们不知道为什么。我们非常欢迎任何帮助!

3 个答案:

答案 0 :(得分:1)

当您尝试从代码访问sharepoint项目而没有管理员权限来更新/删除它们时,请设置网站website.AllowUnsafeUpdates = true;属性

//设置AllowUnsafeUpdates = true以从代码更新数据库/共享点列表。

    FormWeb.AllowUnsafeUpdates = true;

    NewItem.Update();

    FormWeb.AllowUnsafeUpdates = false;

您的代码应该像这样在列表中进行更改..当您将项目添加到列表时。 访问列表并更新其数据时,以相同的方式使用Update语句。

检查是否正确更新列表。可能存在一些SharePoint安全问题。

参考链接: http://blogs.msdn.com/b/infopath/archive/2010/04/01/add-items-to-a-sharepoint-list-using-managed-code.aspx

您可以查看[SPSecurity.RunWithElevatedPrivileges] [1]

[1]:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspxlinklink

您可以通过在sharepoint中添加活动来检查那里发生的事情。 检查这篇文章并进行调试.. http://developmentsolutionsjunction.blogspot.com/2011/06/adding-events-and-eventhandlers-in.html

答案 1 :(得分:1)

所以我终于能够找出问题所在。经过深入研究和尝试,我发现有第三方功能。它正在为每个创建的列表添加事件,并删除与公司定义的CT不一致的所有内容。这很奇怪,我真的不明白为什么有人想要这个。但好吧,他们支付,他们的规则。 因此,如果您遇到这样的问题,请尝试这种可能性。 但是,在此过程中我也汲取了一些东西,例如:如果您正在使用来自Web作用域的SP实例,请使用Web范围的功能,而不是站点功能,SP也有一个讨厌的习惯,即静默的异常。另外,如果你是从事件属性中获取SPWeb的实例,并不一定意味着它已经创建。还需要一些时间,Update()本身也是DB必须执行的操作。有时候最好还是检查一下你是否真的有实例,如果没有,那么就会有一段时间停留。

答案 2 :(得分:0)

您是否在代码中使用了.Update()方法?