Поделиться через


Инструкции. Создание настраиваемого класса поля

Дата последнего изменения: 9 марта 2015 г.

Применимо к: SharePoint Foundation 2010

Чтобы создать класс типа настраиваемого поля, необходимо произвести этот класс либо из класса SPField, либо из одного из классов, перечисленных в следующей таблице, каждый из которых наследует от класса SPField.

ПримечаниеПримечание

Существуют также другие классы типов полей (классы с именами типа SPField*), но они обрабатываются Microsoft SharePoint Foundation особыми способами, и получение из них новых классов не поддерживается.

При создании классов настраиваемых полей, которые прямо или косвенно производятся из класса SPField, рекомендуется использовать следующий контекст именования :

имя_типа_поляField

Примеры правильно именованных классов: TargetDateField и RegularExpressionField. (Классы, производные от SPField, которые поставляются с SharePoint Foundation, были созданы до определения данного контекста именования, и для их имен использовался шаблон SPFieldимя_типа_поля, например SPFieldDateTime.)

Классы настраиваемых полей можно производить из следующих членов класса SPField

Классы типов настраиваемых полей, не наследующие характеристики напрямую от класса SPField, должны производиться от одного из следующих классов.

Класс

Описание

SPFieldBoolean

Представляет тип поля Boolean.

SPFieldChoice

Представляет тип поля выбора.

SPFieldCurrency

Представляет тип поля денежной единицы.

SPFieldDateTime

Представляет тип поля "дата-время".

SPFieldLookup

Представляет поле подстановки. Значение поля для объекта SPFieldLookup содержится в объекте SPFieldLookupValue.

SPFieldMultiChoice

Представляет тип поля с несколькими вариантами для выбора. Значение поля для объекта SPFieldMultiChoice содержится в объекте SPFieldMultiChoiceValue.

SPFieldMultiColumn

Представляет тип поля с несколькими столбцами. Значение поля для объекта SPFieldMultiColumn содержится в объекте SPFieldMultiColumnValue.

SPFieldMultiLineText

Представляет тип многострочного текстового поля.

SPFieldNumber

Представляет тип числового поля.

SPFieldRatingScale

Представляет тип поля с оценками. Значение поля для объекта SPFieldRatingScale содержится в объекте SPFieldRatingScaleValue.

SPFieldText

Представляет однострочное текстовое поле.

SPFieldUrl

Представляет тип поля URL-адреса. Значение поля для объекта SPFieldUrl содержится в объекте SPFieldUrlValue.

SPFieldUser

Представляет пользователя SharePoint Foundation.

ПримечаниеПримечание

Дополнительные сведения о создании классов значений настраиваемых полей см. в статье Создание настраиваемого класса значения поля.

Задание поведения настраиваемого поля

После выбора класса поля, из которого будет производиться тип настраиваемого поля, можно выбрать члены этого класса, которые требуется переопределить. Поскольку большая часть свойств и поведений, делающая тип поля уникальным, содержится в его классе, имеется богатый набор семантики переопределения, который становится доступным после простого выбора класса, производного от SPField, который будет переопределен новой реализацией.

Например, класс SPField содержит следующие члены, чью реализацию при необходимости можно переопределить при разработке типов настраиваемых полей.

ПримечаниеПримечание

Для большинства членов, приведенных в этом разделе, реализация по умолчанию класса SPField не предназначена для выполнения полезной работы; например, GetFieldValue просто возвращает то, что было в него передано, а GetValidatedString просто вызывает метод ToString класса этого значения (который не содержит никакой логики проверки). По этой причине, если класс типа настраиваемого поля производится напрямую из класса SPField, то необходимо переопределить какие-либо его члены, необходимые для достижения поставленной цели.

Члены класса SPField, которые необходимо переопределять чаще всего

Члены класса SPField

Описание

FieldRenderingControl

Возвращает элемент управления, который может использоваться для визуализации поля в формах просмотра, изменения и создания и на любой странице, использующей элементы управления поля. Объект, создающий элемент управления визуализацией, хранит в своем свойстве Field обратную ссылку на объект поля, который он визуализирует. Как предлагают эти обратные ссылки, данные два объекта являются партнерами. Объект, производный от SPField, обрабатывает взаимодействие с базой данных контента, а элемент управления визуализацией, производный от BaseFieldControl, обрабатывает взаимодействие с пользователями и визуализацию поля в пользовательском интерфейсе. Однако следует заметить, что необязательно отображать настраиваемое поле с помощью элемента управления визуализацией: это поле можно также отображать с помощью RenderPattern, заданного в определении поля, и в этом случае свойство FieldRenderingControl может иметь значение null. Обычно элемент управления визуализацией используется для отображения поля в режимах создания и изменения, а шаблон визуализации используется для отображения поля в режиме просмотра.

При использовании элемента управления визуализацией класс настраиваемого поля должен переопределить метод доступа get свойства FieldRenderingControl следующим стандартным шаблоном кода:

public override BaseFieldControl FieldRenderingControl
{
    [SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]
    get 
    {
        BaseFieldControl fieldControl = new field_type_nameFieldControl();
        fieldControl.FieldName = this.InternalName;
        return fieldControl;
    }
}
Public Overrides ReadOnly Property FieldRenderingControl() As BaseFieldControl
    <SharePointPermission(SecurityAction.LinkDemand, ObjectModel := True)> _
    Get
        Dim fieldControl As BaseFieldControl = New field_type_nameFieldControl()
        fieldControl.FieldName = Me.InternalName
        Return fieldControl
    End Get
End Property

Атрибут permission гарантирует, что это свойство сможет читать только код с разрешением на использование объектной модели SharePoint Foundation. Строка, присваивающая внутреннее имя объекта поля свойству FieldName, также устанавливает свойство Field в объект поля. Это гарантирует, что класс имя_типа_поляFieldControl будет знать, какой объект визуализируется.

FieldRenderingMobileControl

Возвращает элемент управления, который можно использовать для визуализации поля в формах просмотра, изменения и создания в мобильных приложениях.

GetFieldValueForEdit

Возвращает значение поля для визуализации в режиме изменения. Этот метод используется для форм редактирования и создания.

GetValidatedString

Если этот метод переопределяется в производном классе, то возвращает проверенное значение поля. Следует переопределять этот метод для создания пользовательских проверок и логики сериализации данных (базовый метод и множество классов SharePoint Foundation, производных от него, не предоставляют логику проверки). Этот метод может последовательно использовать метод ToString объекта значения поля для преобразования объекта значения поля в строку. Типичное переопределение должно:

  • Вызывать исключение SPFieldValidationException, когда значение, которое пользователь предоставил для поля, недопустимо, или если это значение null, а поле является обязательным. Это исключение обрабатывается SharePoint Foundation, если пользователь пытается сохранить недопустимое значение. Например, новая форма остается открытой и свойство Message исключения используется для размещения сообщения об ошибке рядом с недопустимым полем.

  • Вызывать базовый объект GetValidatedString тогда и только тогда, когда значение проходит настраиваемую проверку.

См. статью Проверка данных в настраиваемых полях для получения дополнительных сведений и примера переопределения GetValidatedString.

OnAdded

Переопределение для задания логики типа настраиваемого поля после добавления поля в список.

OnUpdated

Переопределение для задания логики типа настраиваемого поля после обновления поля.

OnDeleting

Переопределение для задания логики типа настраиваемого поля до удаления поля из списка.

Члены класса SPField, наиболее часто переопределяемые при использовании сложных настраиваемых типов данных

Существует еще несколько членов класса SPField, которые может понадобиться переопределить, когда типу поля требуется сложный настраиваемый тип данных, отличающийся от типа данных родительского типа поля. Такие настраиваемые типы данных задаются с помощью классов значений настраиваемых полей. Дополнительные сведения см. в статье Создание настраиваемого класса значения поля. (Может также потребоваться переопределить эти члены в других ситуациях, даже когда не создаются настраиваемые типы данных.)

Члены класса SPField

Описание

DefaultValue

Возвращает как строку значение по умолчанию, которое может использоваться для поля, когда какой-либо элемент списка не имеет значения в этом поле.

DefaultValueTyped

Возвращает значение по умолчанию, которое может использоваться для поля, когда какой-либо элемент списка не имеет значения в этом поле.

FieldValueType

Возвращает тип значения поля.

GetFieldValue

Возвращает значение поля как объект.

GetFieldValueAsText

Возвращает значение данных поля как строку.

GetFieldValueAsHtml

Возвращает значение данных поля как строку в формате HTML. Это значение поля в формате HTML наиболее часто используется для визуализации значения поля непосредственно на странице. Например, оно используется на странице истории версий элемента списка. Однако это значение поля в формате HTML не используется в форме просмотра. Поле в форме просмотра обычно визуализируется из элемента Collaborative Application Markup Language (CAML)DisplayPattern в файле типа поля fldtype*.xml.

GetValidatedString

См. примечание в разделе Задание поведения настраиваемого поля.

PreviewValueTyped

Возвращает значение для просмотра данных поля, для представления элемента управления поля во время разработки в режиме просмотра и изменения.

См. также

Задачи

Пример: создание типа настраиваемого поля

Концепции

Практическое руководство. Создание настраиваемого типа поля

Типы настраиваемых полей

Проверка данных в настраиваемых полях

Создание настраиваемого класса значения поля