我正在尝试抓取当前列表项,这是一个infopath表单。到目前为止,我正在连接到sharepoint站点,打开列表并尝试获取当前项目,但我不断得到索引超出范围错误。这是我的代码
SPSite WebApp = new SPSite("http://site/");
SPWeb site = WebApp.OpenWeb();
site.AllowUnsafeUpdates = true;
SPList list = Site.Lists.TryGetList("List_Library");
WebApp.AllowUnsafeUpdates = true;
SPListItem item = list.Items[list.Items.Count];
我的问题是如何获取当前列表?此代码位于infopath表单的代码后面,并且在触发Submit事件时调用的FormEvents_Submit方法中。我尝试将代码移动到方法的底部,以确保首先提交表单,但仍然收到超出范围的错误。
答案 0 :(得分:1)
列表项是基于零的索引:Count-1
答案 1 :(得分:0)
旁注:是服务器表单(Forms Server)还是客户端?如果是客户端表单,则除非您的表单始终在服务器上运行,否则不应使用SharePoint服务器端OM。
FormEvents_Submit应该完全处理表单的提交。因此,您的代码有责任以您需要的任何方式首先保存项目。通常作为保存对象的结果,您可以使用某些标识来回溯它(即SPList.AddItem已经返回给您SPListItem)
答案 2 :(得分:0)
事实证明我在提交InfoPath表单之前尝试访问列表项,因此它尚未存在于列表中。为了解决这个问题,我必须将我的代码放在Form_Submit事件的末尾,并确保list.Update()在尝试获取项目之前完成。