#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}" />