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


Использование условий <WHEN>, <WHENNOT> и <WHENCHANGED>

Обновлен: Ноябрь 2007

Можно определять правила, которые выполняются при определенных условиях, используя элементы WHEN, WHENNOT, WHENCHANGED и WHENNOTCHANGED. Эти правила определяют, какие элементы выполняются, когда определенное выражение имеет значение True. Например, можно создать зависимый список выбора, чтобы в зависимости от некоторых условий ограничивать доступ или изменять возможные значения. Далее приведен простой пример условия WHEN:

<FIELD . . . >

    <WHEN field="refname" value="yyy">

</FIELD>

Это условие означает, что содержание элемента FIELD применимо, только когда поле refname имеет значение «yyy». Поле должно содержать допустимое ссылочное имя поля. Дополнительные сведения см. в разделе Ссылочные имена полей.

ms194966.alert_note(ru-ru,VS.90).gifПримечание.

Атрибут значения является не зависящим от регистра. Следовательно, если поле «refname» поля содержит значение «YYY», совпадения включают значения, равные «yyy» или «YYY».

Примеры

Зависимый список выбора

В следующем примере демонстрируется зависимый список выбора, в котором допустимые значения поля «Problem Type» (тип проблемы) ограничены, и зависят от значения поля «ProblemCharacteristic» (характеристика проблемы):

<FIELD refname="MyCorp.ProblemType" name="Problem Type" type="String">
    <WHEN field="MyCorp.ProblemCharacteristic" value="Documentation">
        <ALLOWEDVALUES>
            <LISTITEM value="Spelling Error" />
            <LISTITEM value="Bad Format" />
            <LISTITEM value="Missing Info" />
        </ALLOWEDVALUES>
    </WHEN>
</FIELD>

Обязательные поля

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

WHEN

<WHEN>

Пример

<FIELD refname="MyCorp.Severity" name="Customer Severity" type="String">
    <ALLOWEDVALUES>
        <LISTITEM value="Blocking" />
        <LISTITEM value="Major" />
        <LISTITEM value="Minor" />
    </ALLOWEDVALUES>
    <WHEN field="MyCorp.CustomerReported" value="true">
        <REQUIRED />
    </WHEN>
</FIELD>

Условие   Любое содержимое этого элемента применимо, пока поле Customer Reported имеет значение, равное true.

WHENNOT

<WHENNOT>

Пример

<WHENNOT field="refname" value="yyy">
</WHENNOT>

Условие   Любое содержимое этого элемента применимо, пока поле refname имеет значение, не равное «yyy».

WHENCHANGED

<WHENCHANGED>

Пример

<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
    <WHENCHANGED field="MyCorp.State">
        <COPY from="clock" />
    </WHENCHANGED>
</FIELD>
<!-- Clear the status field whenever someone changes the state -->
<FIELD refname="MyCorp.Status" name="Status" type="String">
    <WHENCHANGED field="MyCorp.State">
        <COPY from="value" value="">
    </WHENCHANGED>
</FIELD>

Условие   Любое содержимое этого элемента применимо, если поле refname было изменено пользователем.

WHENNOTCHANGED

<WHENNOTCHANGED>

Пример

<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<!-- Make the State field readonly when the StateDate field is not changed -->
    <WHENNOTCHANGED field="MyCorp.State">
        <READONLY />
    </WHENNOTCHANGED>
</FIELD>

Условие   Любое содержимое этого элемента применимо, если поле refname не изменялось.

См. также

Основные понятия

Доступные правила для полей