SharePoint 2010: (pré-remplir) Valeur par défaut dans NewForm.aspx, sur une colonne de type recherche


Près-requis

Avoir deux listes SharePoint :
  • Liste A
  • Liste B
Ajouter une colonne de type recherche dans la Liste B et la faire pointer sur la Liste A:



Dans le formulaire d'ajout d'item (NewForm.aspx), apparait deux listes de sélections:



 Le besoin est d'avoir la liste de sélection de droite déjà remplis, au moment de l'ajout d'un item.


Ajouter des valeurs par défaut

1 - Sur le bouton

Sur le bouton / lien, ... accédant au formulaire d'ajout, par exemple :



Ajouter à l'url, le paramètre suivant : NewForm.aspx?itemId=44

"44" correspond à l'ID d'un item de la Liste A.

2 -  Sur la page contenant le formulaire d'ajout

Ajouter JQuery dans votre page NewForm.aspx
Puis les fonctions JS suivante:

<script>

$(document).ready(function() {
        // select
 var itemId = getUrlVars()["itemId"];
 var opt = $("option[value='" + itemId + "']");
   
 if (opt != null){
         $("select[title='%ColumnName% - Valeurs sélectionnées']")
         .html('<option title="'+opt.text()+'" value="'+itemId +'">'
                    +opt.text()
              +'</option>');
    
         // input hidden
  $("#%Id_Input_Hidden%").val(itemId + '|t' + opt.text());
  opt.remove();
 }
});




function getUrlVars()
{
 var vars = [], hash;
 var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

 for(var i = 0; i < hashes.length; i++)
 {
  hash = hashes[i].split('=');
  vars.push(hash[0]);
  vars[hash[0]] = hash[1];
 }
 return vars;
}
 
 

</script>
 
La fonction getUrlVars() recherche le paramètre URL itemId et retourne sa valeur.
Il vous faut spécifier :
  • %ColumnName% : correspond au nom de votre colonne (ici, c'est "Liste B")
  • %Id_Input_Hidden% : correspond à l'ID de la balise <input> caché présent dans le code HTML. Pour le découvrir:
    • Ouvrer la page NewForm.aspx avec Firefox.
    • Lancer Firebug.
    • Sélectionner la sélection:




    • Puis naviguer aux éléments du dessus
    • Copier l'ID du 1er  <input> caché, il s'agit de votre %Id_Input_Hidden% :



Notes: lorsque vous modifier la structure de la colonne (changer le nom par exemple), un nouveau id est généré.

Voilà, lorsque vous ouvrer la page NewForm.aspx?itemId=44, la sélection de la liste droite contient la référence donnée en paramètre.


Aucun commentaire:

Enregistrer un commentaire