SharePoint ItemAdded事件延迟

时间:2010-02-25 14:10:00

标签: c# visual-studio sharepoint datatable event-handling

又一个问题。

所以现在我的EventReceiver及其逻辑工作正常。除了一件事。

基本上它通过CAML查询查询整个列表,然后将结果传递给DataTable对象,然后传递给DataRow对象......

像所有人一样,在测试环境中,它完美无缺,但在生产中......

我需要更新的列会更新,但不会立即显示。 item列接收我想要的值,但是在第一次刷新时它没有显示,你必须再次刷新页面,然后它出现......

唯一的区别在于teste env。我的列表有200条记录,在生产中,它有近5000条记录。

有些问题:

  • 有没有办法定义你想要多少条记录?在CAML或DataTable对象中?像“SELECT TOP 100 ......”这样的东西。
  • 如果没有,有没有办法让刷新过程停止并等待代码执行?

一些信息:

  • 这是WSS 3.0,而我正在拦截的事件是ItemAdded,它解释了刷新而不是等待我的代码。

哦,考虑更改为ItemAdding事件会有点问题,因为我需要捕获记录的ID,这在ItemAdding中尚未提供,因为列表项尚未提交到数据库

提前致谢。

3 个答案:

答案 0 :(得分:2)

这里的问题是“GetDataTable()”方法。当我运行CAML查询并用结果填充数据表时,它将通过修饰符丢失顺序。但是,如果我使用SPListItemCollection对象获得结果,它将按照我想要的方式返回该行。

正如另一篇文章所述......“这是一个令人讨厌的问题”。

答案 1 :(得分:1)

类似的问题和答案here。您应该能够使用SPQuery的Rowlimit属性。

答案 2 :(得分:1)

经过大量搜索后,我最终将代码移动到ItemAdding事件,该事件是同步的,并将在SharePoint加载其页面之前完成执行。

即使我将结果行限制为5,它仍然会加载没有我想要显示的值的页面。


此外,如果您正在考虑从使用计算值的字段中捕获值,并且其中包含公式,请注意,因为至少在我的示例中,SharePoint没有通过事件执行来解析公式,因此具有计算值的字段将始终返回 null

相关问题