Получение текущего элемента списка в infopath с помощью C # - PullRequest
0 голосов
/ 15 апреля 2011

Я пытаюсь получить текущий элемент списка, который является формой 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 и находится в методе FormEvents_Submit, который вызывается при запуске события Submit. Я попытался переместить код в конец метода, чтобы убедиться, что форма отправляется первой, но все еще получала ошибку вне диапазона.

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

Элемент списка является нулевым индексом: Count-1

0 голосов
/ 08 апреля 2012

Оказывается, я пытался получить доступ к элементу списка ДО того, как была отправлена ​​форма InfoPath, поэтому его еще не было в списке. Чтобы обойти это, я должен был бы поместить свой код в конец события Form_Submit и убедиться, что list.Update () был завершен, прежде чем пытаться захватить элемент.

0 голосов
/ 16 апреля 2011

Примечание: это серверная форма (Forms Server) или клиент? Если это клиентская форма, вам не следует использовать OM на стороне сервера SharePoint, если только ваша форма не будет всегда работать на сервере.

FormEvents_Submit должен полностью обрабатывать отправку формы. Таким образом, ваш код несет ответственность за сохранение элемента первым, каким вам нужно. Как правило, в результате сохранения объекта вы получаете некоторую идентичность, которую вы можете использовать для извлечения его обратно (т.е. SPList.AddItem уже возвращает вам SPListItem)

...