You need to sign in to do that
Don't have an account?
louisa barrett 7
Controlling picklist on VF page with read only FLS
Hi,
I have a vf page which has several page block tables on all with inline edit support enabled. Within the tables there are controlling(Product_Category__c) and dependent(Make__c) picklists. My issue is that the the controlling picklist has a FLS of read only as it is set via a trigger, when I put this field onto the vf page, I get the error of 'The inline edit-enabled dependent picklist 'Make' requires its controlling field 'Product Category' to be present on the page.' when a profile other than system admin views the page. If I remove the read only flags from the FLS and set it at a page layout level, the user can then view the vf page, but the controlling field becomes editable.
Does anyone have any suggestions how I can get around this?
This is my vf page. I have several pageblocktables within the page, but I've removed all but one for ease of reading.
Many thanks for any help
I have a vf page which has several page block tables on all with inline edit support enabled. Within the tables there are controlling(Product_Category__c) and dependent(Make__c) picklists. My issue is that the the controlling picklist has a FLS of read only as it is set via a trigger, when I put this field onto the vf page, I get the error of 'The inline edit-enabled dependent picklist 'Make' requires its controlling field 'Product Category' to be present on the page.' when a profile other than system admin views the page. If I remove the read only flags from the FLS and set it at a page layout level, the user can then view the vf page, but the controlling field becomes editable.
Does anyone have any suggestions how I can get around this?
This is my vf page. I have several pageblocktables within the page, but I've removed all but one for ease of reading.
Many thanks for any help
<apex:page standardController="Account" extensions="SiteSurvey"> <apex:form > <apex:pageBlock id="Block1" title="Active assets for {!Account.Name}" > <apex:panelGrid columns="2"> <apex:commandButton value="View as PDF" action="{!printAsPDF}"/> <apex:commandButton value="View as xls" action="{!printAsXLS}"/> </apex:panelGrid> <apex:pageBlockButtons > <apex:commandbutton value="Save" action="{!updateAssets}" id="saveButton" style="display:none"/> <apex:commandButton value="Cancel" action="{!cancelAssets}" id="cancelButton" style="display:none"/> </apex:pageBlockButtons> <apex:pageBlockSection id="tsSection" collapsible="true" title="Touchscreens [{!TouchscreenAssets.size}]" columns="1" rendered="{!TouchscreenAssets.size >0}" > <apex:pageBlockTable value="{!TouchscreenAssets}" var="a" style="table-layout:fixed"> <apex:column headerValue="Asset Name:"> <apex:outputLink value="/{!a.ID}" target="_blank"> {!a.Name} </apex:outputLink> </apex:column> <apex:column headerValue="Contract Status"> <apex:outputField value="{!a.Service_Contract_Status__c}"/> </apex:column> <apex:column headerValue="Category"> <apex:outputField value="{!a.Product_Category__c}" /> </apex:column> <apex:column headerValue="Make" > <apex:outputField value="{!a.Make__c}"/> </apex:column> <apex:column headerValue="Model" > <apex:outputField value="{!a.Model__c}"/> </apex:column> <apex:column headerValue="OS" > <apex:outputField value="{!a.Operating_System__c}"/> </apex:column> <apex:column headerValue="Location #" > <apex:outputField value="{!a.Location_Number__c}"/> </apex:column> <apex:column headerValue="IP" > <apex:outputField value="{!a.IP_Address__c}"/> </apex:column> <apex:column headerValue="User Name" > <apex:outputField value="{!a.User_Name__c}"/> </apex:column> <apex:column headerValue="Password" > <apex:outputField value="{!a.Password__c}"/> </apex:column> <apex:column headerValue="Drawer" > <apex:outputField value="{!a.Drawer_Type__c}"/> </apex:column> <apex:column headerValue="Network" > <apex:outputField value="{!a.Network_Communication__c}"/> </apex:column> <apex:column headerValue="Comms" > <apex:outputField value="{!a.Communication_Method__c}"/> </apex:column> <apex:column headerValue="Prox" > <apex:outputField value="{!a.Prox_Type__c}"/> </apex:column> <apex:column headerValue="Desc" > <apex:outputField value="{!a.Description}" style="white-space:normal"/> </apex:column> <apex:inlineEditSupport event="onClick" showOnEdit="saveButton, cancelButton"/> </apex:pageBlockTable> </apex:pageBlockSection> <script> twistSection(document.getElementById('{!$Component.Block1.tsSection}').getElementsByTagName('img')[0]) </script> </apex:pageBlock> </apex:form> </apex:page>
From what I understand (Please correct me if I am wrong) you don't want the users to edit the Controlling field i.e Product_Category__c but should be able to edit dependent field i.e Make__c. Please consider the workaround I am not 100 % sure it may solve your issue but it's worth a try.
Give the style to the <apex: column> to restrict any button clicks or events with mouse thus disabling the inlinedit for that specific field alone.
Thanks and Regards
Ajay Krishna R
That worked perfectly for the column on the page, but unfortunately the controlling field (Product_Category__c) is still editable on the pop up dialog that appears when you click one of the dependent picklists. Is there anyway to make it read only on that dialog?
Many thanks