使用C#在infopath中抓取当前列表项

时间:2011-04-15 19:54:40

标签: c# sharepoint infopath

我正在尝试抓取当前列表项,这是一个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方法中。我尝试将代码移动到方法的底部,以确保首先提交表单,但仍然收到超出范围的错误。

3 个答案:

答案 0 :(得分:1)

列表项是基于零的索引:Count-1

答案 1 :(得分:0)

旁注:是服务器表单(Forms Server)还是客户端?如果是客户端表单,则除非您的表单始终在服务器上运行,否则不应使用SharePoint服务器端OM。

FormEvents_Submit应该完全处理表单的提交。因此,您的代码有责任以您需要的任何方式首先保存项目。通常作为保存对象的结果,您可以使用某些标识来回溯它(即SPList.AddItem已经返回给您SPListItem)

答案 2 :(得分:0)

事实证明我在提交InfoPath表单之前尝试访问列表项,因此它尚未存在于列表中。为了解决这个问题,我必须将我的代码放在Form_Submit事件的末尾,并确保list.Update()在尝试获取项目之前完成。