Программная установка значения поля для списка точек доступа - PullRequest
7 голосов
/ 11 октября 2010

Я пытаюсь просто добавить простое поле текста или гиперссылки к элементу списка в sharepoint 2007.

Я могу добавить поле без проблем:

list.Fields.Add("MyField",SPFieldType.Text, false);

И это хорошо видно в моем списке. Однако независимо от того, каким образом я пытаюсь, я не могу программно установить значение для поля. Я попробовал:

list.items[0]["MyField"] = "text";

и я попытался загрузить в поле:

SPField field = list.items[0].Fields["MyField"];

и установка его там, установка значения по умолчанию и обновление, но ничего такого не происходит.

Я всегда заканчиваю свои блоки кода с помощью list.update (); или если я оперирую самим элементом item.update (); так что я по крайней мере не скучаю по этому. Может кто-нибудь сказать мне, что я делаю не так?

Спасибо

Ответы [ 4 ]

10 голосов
/ 11 октября 2010

Попробуйте:

SPListItem item = list.items[0];
item["MyField"] = "text";
item.Update();

Хотя это кажется эквивалентным, приведенный выше код не совпадает с:

list.items[0]["MyField"] = "text";
list.items[0].Update();

Для получения дополнительной информации см. здесь и здесь для людей, которые задокументировали такое же поведение.

3 голосов
/ 11 октября 2010

Не могли бы вы попробовать это для добавления нового поля и установки значения по умолчанию? Непроверенный код. дайте мне знать, как оно идет.

SPFieldText fldName = (SPFieldText)list.Fields.CreateNewField(SPFieldType.Text.ToString(), "mycolumn");
fldName.DefaultValue = "default";
list.Fields.Add(fldName);
list.Update();
1 голос
/ 11 октября 2010

Я всегда находил лучший маршрут, чтобы получить ссылку на элемент списка напрямую и обновить его, в отличие от использования маршрута индексатора.Так же, как упоминает первый пример Рича.

http://www.sharepointdevwiki.com/display/public/Updating+a+List+Item+programmatically+using+the+object+model

0 голосов
/ 14 октября 2010

Из всего приведенного выше обсуждения выясняется, что вы пытаетесь установить значение поля в обработчике события списка и устанавливаете значение в событии добавления элемента или обновления элемента. Если это так, то вам нужно рассмотреть AfterProperties. Помните, что у нас есть события * ing и * ed, и в случае * событий событий нам нужно работать с BeforeProperties и AfterProperties.

Надеюсь, это поможет!

...