Как скрыть раздел полей с помощью флажка? - PullRequest
0 голосов
/ 07 февраля 2012

Как скрыть раздел полей с помощью флажка на страницах visualforce?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Принимая во внимание подход Salesforce (сохранение веса страницы и т. Д.), Вы можете сделать что-то вроде следующего:

<apex:inputCheckbox value="{!theBool}">
    <apex:actionSupport event="onChange" action="{!myAction}" rerender="theFieldsPanel"/>
</apex>

<apex:outputPanel id="theFieldsPanel">
    <apex:variable var="v" value="" rendered="{!theBool}">
        <apex:inputField value="{!someField"} rendered/>
        <!-- more fields etc. -->
    </apex:variable>
</apex:outputPanel>

Обратите внимание, что я не использую атрибут rendered на панели выводаСамо по себе, это потому, что если он не отображается, то он не существует на странице и, следовательно, не является хорошей целью rerender!Теперь вам просто нужно простое действие на контроллере (вы можете выполнить любую другую логику здесь, если это необходимо):

public Pagereference myAction()
{
    // any logic etc. goes here
    return null;
}

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

0 голосов
/ 08 февраля 2012

Я бы просто использовал Javascript или, что еще лучше, jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...