Кнопка отключить на странице визуального принудительного использования

#salesforce #apex #visualforce #salesforce-lightning

#salesforce #apex #visualforce #salesforce-lightning

Вопрос:

На стандартном объекте (учетной записи) у меня есть кнопка под названием SAD. Кнопка добавляется туда на странице Visual force.

Теперь мой вопрос находится на странице учетной записи, для определенного значения раскрывающегося списка полей (например.. Тип компании =»Z001′) как отключить видимость кнопки SAD для всех пользователей?

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

1. используете ли вы тег <apex:detail /> для отображения сведений?

Ответ №1:

Похоже, вы используете apex: тег detail для отображения сведений о записи на странице visualforce.

Чтобы скрыть любую кнопку, вы можете использовать приведенный ниже фрагмент кода вместе с условиями, когда скрывать, а когда нет.

 <apex:page standardController="Account" >
<apex:detail />
<apex:includeScript value="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" />

<script>
    $(document).ready(function() {
        if({!Account.Company_Type__c == 'Z001'}){
            $('[name="REPLACE_BUTTON_NAME_HERE"]').hide();
        }
    });
</script>

</apex:page>
 

получите название кнопки, проверив кнопку на странице visualforce, и замените его в коде на REPLACE_BUTTON_NAME_HERE

Ответ №2:

Почему бы не сделать это с помощью LWC вместо этого?

Вы можете использовать декоратор @wire с методом GetRecord uiRecordApi для извлечения данных из объекта на основе идентификатора текущей записи.

Файл JS будет выглядеть примерно так:

 @wire(getRecord, { recordId: '$recordId', fields:['Company_Type__c'] })
Account;
visible = false;

if (Account.Company_Type__c == 'Z001'){
    visible = true;
}

handleClick(){
    // use @wire to access Controller class you used for your vf page.
}
 

Вы бы разместили кнопку в шаблоне LWC. Просто используйте тег.

HTML-файл будет выглядеть примерно так:

 <template>
    <template if:true={visible}>
        <lightning-button
        variant="normal"
        label="SAD"
        title="SAD Button"
        onclick={handleClick}>
        </lightning-button>
    </template>
</template>
 

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

1. Дорогой Джонатан Янив Бен Авраам, эта функциональность уже реализована, мы не должны все менять. Но, насколько я знаю, с LWC это проще. спасибо за ваш ответ

Ответ №3:

я нашел решение для этого кода, добавив свойство в контроллер и переведя его с контроллера на страницу VF. Вот код.

Код в классе Extn

 Public Account AccName{get;set;}
Public Account Acnt{get;set;}

Public user userid;

public boolean stagesDisabled {
get {

     userid =[SELECT Id, Country FROM User where Id =:UserInfo.getUserId()];

     Acnt = [Select id, Company_Type__c from account where id =: Acc.id];                

     return( Acnt.Company_Type__c =='Z008' amp;amp; userid.Country =='XYZ' );
    }
}
 

Код на странице VF

 <apex:commandButton action="{!SAD}" value="New Sales Area Data"   disabled="{!stagesDisabled}" />