This one took a while to piece together so hopefully this will help someone out.
On my VF page, I created an anchor tag to act like a "Command Link":
<a href="javascript:void(0);" id="selectAllRegions">[Select All Regions for Language]</a></span>
Using some jquery, I catch the click as follows:
j('#selectAllRegions').click(function () {
selectRegions('{!$Component.regionsMS}');
});
The regionsMS id is the id of your multiselect apex:inputfield.
The "selectRegions" function does the following:
function selectRegions(objId){
var multiSelect;
var unSelectedId = objId + "_unselected";
var selectedId = objId + "_selected";
multiSelect = document.getElementById(unSelectedId);
for (i = 0; i < multiSelect.options.length; i++) {
if(multiSelect.options[i].text == "Region 1"){
multiSelect.options[i].selected = true;}
}
javascript:MultiSelectPicklist.handleMSPSelect(objId);
}
The key to making this work was this last function, which came up in a search here (there's some other NSFW stuff there, just fyi). If you use firebug or chrome's developer tools, you'll see how the script interacts with the elements that make up the multiselect control.
And there you have it - when you click the link "Select All Regions for Language", Region 1 is selected. All that needs to be done now, is evaluate the selected language and then change which region values are selected.
No comments:
Post a Comment