C# SharePoint项目添加了事件延迟

C# SharePoint项目添加了事件延迟,c#,visual-studio,sharepoint,datatable,event-handling,C#,Visual Studio,Sharepoint,Datatable,Event Handling,还有一个问题 现在我的EventReceiver及其逻辑工作正常。除了一件事 基本上,它通过CAML查询查询整个列表,然后将结果传递给DataTable对象,然后再传递给DataRow对象 和所有人一样,在测试环境中,它工作得非常完美,但在生产环境中 发生的情况是,我需要更新的列得到更新,但没有立即显示。item列接收到我想要的值,但它在第一次刷新时不显示,您必须再次刷新页面,然后它出现 唯一的区别是在TesteEnv中。我的名单上有大约200条记录,而在制作过程中,它几乎有5000条记录 一些

还有一个问题

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

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

和所有人一样,在测试环境中,它工作得非常完美,但在生产环境中

发生的情况是,我需要更新的列得到更新,但没有立即显示。item列接收到我想要的值,但它在第一次刷新时不显示,您必须再次刷新页面,然后它出现

唯一的区别是在TesteEnv中。我的名单上有大约200条记录,而在制作过程中,它几乎有5000条记录

一些问题:

  • 有没有办法定义需要多少条记录?在CAML中还是在DataTable对象中?类似于“选择前100名…”
  • 如果没有,是否有方法使刷新进程停止并等待代码执行
一些信息:

  • 它是WSS3.0,我截取的事件是ItemAdded,这解释了刷新没有等待我的代码
哦,考虑更改为ItemAdding事件可能会有点问题,因为我需要捕获记录的ID,该ID在ItemAdding中还不可用,因为列表项尚未提交到数据库


提前感谢。

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

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

这里的问题是“GetDataTable()”方法。当我运行CAML查询并用结果填充datatable时,它将丢失order by修饰符。但是如果我使用SPListItemCollection对象得到结果,它将以我想要的方式返回该行

正如在另一篇文章中看到的。。。“这是一个令人讨厌的问题。”

这里的问题是“GetDataTable()”方法。当我运行CAML查询并用结果填充datatable时,它将丢失order by修饰符。但是如果我使用SPListItemCollection对象得到结果,它将以我想要的方式返回该行


正如在另一篇文章中看到的。。。“这是一个令人讨厌的问题”。

在搜索了很多之后,我最终将代码移动到ItemAdding事件,该事件是同步的,将在SharePoint加载其页面之前完成执行

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



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

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

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


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