又一个问题。
所以现在我的EventReceiver及其逻辑工作正常。除了一件事。
基本上它通过CAML查询查询整个列表,然后将结果传递给DataTable对象,然后传递给DataRow对象......
像所有人一样,在测试环境中,它完美无缺,但在生产中......
我需要更新的列会更新,但不会立即显示。 item列接收我想要的值,但是在第一次刷新时它没有显示,你必须再次刷新页面,然后它出现......
唯一的区别在于teste env。我的列表有200条记录,在生产中,它有近5000条记录。
有些问题:
一些信息:
哦,考虑更改为ItemAdding事件会有点问题,因为我需要捕获记录的ID,这在ItemAdding中尚未提供,因为列表项尚未提交到数据库
提前致谢。
答案 0 :(得分:2)
这里的问题是“GetDataTable()”方法。当我运行CAML查询并用结果填充数据表时,它将通过修饰符丢失顺序。但是,如果我使用SPListItemCollection对象获得结果,它将按照我想要的方式返回该行。
正如另一篇文章所述......“这是一个令人讨厌的问题”。
答案 1 :(得分:1)
类似的问题和答案here。您应该能够使用SPQuery的Rowlimit属性。
答案 2 :(得分:1)
经过大量搜索后,我最终将代码移动到ItemAdding事件,该事件是同步的,并将在SharePoint加载其页面之前完成执行。
即使我将结果行限制为5,它仍然会加载没有我想要显示的值的页面。
此外,如果您正在考虑从使用计算值的字段中捕获值,并且其中包含公式,请注意,因为至少在我的示例中,SharePoint没有通过事件执行来解析公式,因此具有计算值的字段将始终返回 null 。