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

本文关键字:列表 抓取 infopath | 更新日期: 2023-09-27 17:50:30

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

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

列表项为0为基础的索引:Count-1

旁注:是服务器形式(Forms server)还是客户端?如果是客户端表单,你不应该使用SharePoint服务器端OM,除非你的表单将总是在服务器上运行。

FormEvents_Submit应该完全处理表单的提交。因此,您的代码有责任以您需要的任何方式首先保存item。一般来说,作为保存对象的结果,你会得到一些可以用来检索它的标识(例如SPList)。AddItem已经返回SPListItem)

原来我试图在InfoPath表单提交之前访问列表项,所以它还不存在于列表中。为了解决这个问题,我必须将代码放在Form_Submit事件的末尾,并确保list.Update()在尝试抓取项目之前完成。