четверг, 23 января 2014 г.

CAML выражение в Lookup полях

Обнаружил интересную фичу в полях типа Lookup. В данный тип поля в Default значение можно вставить CAML Query запрос. Все дальнейшие примеры будут полезны при моделирование вашего приложения используя Visual Studio.



Для формирования примера мы сделаем список к примеру "Статусов" (дальше список B) и основной список А.

Описание списка B:

Schema.xml
....
    <Fields>
      <Field Type="Integer" ID="{e2414046-4988-4046-8c99-32be015079b6}" Name="StaticId" StaticName="StaticId" DisplayName="StaticId" Required="FALSE" EnforceUniqueValues="TRUE" Indexed="TRUE" Hidden="TRUE" />
 
      <Field Type="Text" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" DisplayName="$Resources:core,Title;" Required="TRUE" StaticName="Title" FromBaseType="TRUE" ColName="nvarchar1" EnforceUniqueValues="FALSE" Indexed="FALSE" MaxLength="255" Version="1" RowOrdinal="0"/>
    </Fields>
....

Elements.xml (List Instance Добавляем некую дефолтные элементы)
....

 <Data>
      <Rows>
        <Row>
          <Field Name="StaticId">0</Field>
          <Field Name="Title">Open</Field>
        </Row>
        <Row>
          <Field Name="StaticId">1</Field>
          <Field Name="Title">On Hold</Field>
        </Row>
        <Row>
          <Field Name="StaticId">2</Field>
          <Field Name="Title">New Issue</Field>
        </Row>
      </Rows>
    </Data>
....

Описание списка A:

Schema.xml
....
<Field ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Type="Text" Name="Title" DisplayName="$Resources:core,Title;"
             Required="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Title" MaxLength="255" />
      <Field Type="Lookup" ID="{7a2a717f-e024-4e4e-a92f-40461a66f712}" StaticName="ReqStatus" Name="ReqStatus"
             DisplayName="Status" Required="TRUE" EnforceUniqueValues="FALSE" List="Lists/Status" ShowField="Title"
             UnlimitedLengthInDocumentLibrary="FALSE">
        <Default><![CDATA[<Where><Eq><FieldRef Name="StaticId"/><Value Type="Integer">2</Value></Eq></Where>]]></Default>
      </Field>
....

Как видно из схемы списка А, мы написали в значение по умолчанию CAML выражение, которое нам будет при создание нового элемента проставлять значение исходя из выражения.

Что в итоге получается:


Данная фича будет очень полезна для архитектурных решений типа HelpDesk и т.д.

P.S. Для Hosted App for SharePoint 2013 я не тестил данную фичу

Комментариев нет:

Отправить комментарий