Программная установка значения поля для списка точек доступа
Я пытаюсь просто добавить простое поле текста или гиперссылки к элементу списка в 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 ответа
Пытаться:
SPListItem item = list.items[0];
item["MyField"] = "text";
item.Update();
Хотя это кажется эквивалентным, приведенный выше код не совпадает с:
list.items[0]["MyField"] = "text";
list.items[0].Update();
Для получения дополнительной информации см. Здесь и здесь для людей, которые задокументировали такое же поведение.
Не могли бы вы попробовать это для добавления нового поля и установки значения по умолчанию? Непроверенный код. дайте мне знать, как оно идет.
SPFieldText fldName = (SPFieldText)list.Fields.CreateNewField(SPFieldType.Text.ToString(), "mycolumn");
fldName.DefaultValue = "default";
list.Fields.Add(fldName);
list.Update();
Я всегда находил, что лучший маршрут - это получить ссылку на элемент списка напрямую и обновить его, в отличие от использования маршрута индексатора. Так же, как упоминает первый пример Рича.
Из всего вышеприведенного обсуждения видно, что вы пытаетесь установить значение поля в обработчике события списка, и вы устанавливаете значение в событии добавления элемента или обновления элемента. Если это так, то вам нужно рассмотреть AfterProperties. Помните, что у нас есть *ing и *ed события, и в случае *ing событий нам нужно работать с BeforeProperties и AfterProperties.
Надеюсь, это поможет!