I’m currently working on a PowerApps project where I have several dropdown lists (option sets) that should only allow users to select each team once. I want to prevent users from reselecting teams after they’ve been chosen. However, I’m running into a few issues.
Here’s a Snippet of My Code:
let selectedTeams = [];
// Codes pour les équipes
function onTeamChange(executionContext, fieldName) {
const formContext = executionContext.getFormContext();
const selectedValue = formContext.getAttribute(fieldName).getValue();
// Si une valeur a été désélectionnée
if (selectedValue === null) {
// Retirer l'élément désélectionné de selectedTeams``
selectedTeams = selectedTeams.filter(team => team !== fieldName);
formContext.ui.clearFormNotification("duplicateTeam");
return;
}
// Vérifie si l'équipe est déjà dans la liste des équipes sélectionnées.
if (selectedTeams.includes(selectedValue)) {
formContext.ui.setFormNotification("Cette équipe a déjà été choisie.", "ERROR", "duplicateTeam");
formContext.getAttribute(fieldName).setValue(null); // Réinitialise la sélection pour éviter le doublon.
} else {
formContext.ui.clearFormNotification("duplicateTeam");
selectedTeams.push(selectedValue); // Ajoute la nouvelle sélection dans selectedTeams`.`
}
// Met à jour les options des dropdowns
updateDropdownOptions(formContext);
}
function updateDropdownOptions(formContext) {
const allDropdowns = ["teamOptionSet1", "teamOptionSet2", "teamOptionSet3", "teamOptionSet4"]; // Noms des champs
allDropdowns.forEach(fieldName => {
const dropdown = formContext.getAttribute(fieldName);
const options = dropdown.getOptions(); // Récupère toutes les options de l'option set
// Réinitialise les options de l'option set
options.forEach(option => {
// Si l'option est dans la liste selectedTeams`, désactivez-la`
option.disabled = selectedTeams.includes(option.value);
});
// Met à jour le dropdown avec les options modifiées
// Note: Dans PowerApps, vous ne pouvez pas appeler setOptions. Vous devez le gérer par logique utilisateur.
});
}
I have a JavaScript function that runs on the onchange event for each dropdown. The goal is to check if a selected team has already been chosen and, if so, prevent re-selection.
I’m storing the selected values in an array, but I’m having trouble clearing options after a selection is made.
Issue I’m Facing: The items do not disappear from the dropdown list after selection.
Questions:
How can I modify my code to ensure that selected options are properly removed from the dropdown list?
Any insights, code examples, or pointers would be greatly appreciated! Thanks in advance for your help!
I’m storing the selected values in an array, but I’m having trouble clearing options after a selection is made.