2009-12-14 2 views
0

Я создал многоколонное пользовательское поле и развернул его в SharePoint. Чтобы иметь возможность использовать значения полей из моего настраиваемого поля, я также развернул приемник событий, чтобы скопировать три значения из моего настраиваемого поля в три отдельных стандартных текстовых поля. Если трех текстовых полей не существует, я создаю их с кодом XML. Я также уверен, что поля имеют правильные параметры видимости, даже если поле существует.Непустые поля пустые в слове

Создание поля в XML:

string fieldXml = string.Format("<Field ID=\"{0}\" " + 
            "Type=\"{1}\" " + 
            "Name=\"{2}\" " + 
            "StaticName=\"{2}\" " + 
            "DisplayName=\"{2}\" " + 
            "Required=\"{3}\" " + 
            "ShowInEditForm=\"TRUE\" " + 
            "ShowInNewForm=\"TRUE\" " + 
            "ShowInDisplayForm=\"TRUE\" " + 
            "ShowInListSettings=\"TRUE\" " + 
            "ShowInViewForms=\"TRUE\" " + 
            "ShowInVersionHistory=\"TRUE\" " + 
            "ShowInFileDlg=\"TRUE\"" + 
            "></Field>", 
            Guid.NewGuid(), 
            fieldType, 
            fieldName, 
            required); 

list.Fields.AddFieldAsXml(fieldXml, true, SPAddFieldOptions.Default); 

Убедитесь, что настройки видимости OK, когда поле уже существует:

field.ShowInEditForm = true; 
field.ShowInNewForm = true; 
field.ShowInDisplayForm = true; 
field.ShowInListSettings = true; 
field.ShowInViewForms = true; 
field.ShowInVersionHistory = true; 
field.Update(); 
list.Update(); 

Я не нашел способ установки свойства ShowInFileDlg программно когда поле было создано ,

Дело в том, что этот код отлично работает до тех пор, пока я не открою документ в MS Word, и все три текстовые поля имеют текст, назначенный в списке, но в Word они пусты!

Кто-нибудь видел это раньше, что я делаю неправильно !?

+0

Решил его с помощью расширения docx вместо старого документа! –

+0

Если у кого-то есть время. Какова наилучшая практика по добавлению полей программным способом для перечисления элементов. Следует ли добавить их в тип контента, список или элемент списка? –

ответ

0

Чтобы иметь возможность открыть поле в DIP (документ информационной панели в верхней части в текстовых документах), необходимо добавить свойство SourceId в поле:

SourceID="http://schemas.microsoft.com/sharepoint/v3"

Для получения дополнительной информации см here (MSDN).

Смежные вопросы