2016-06-24 2 views
1

Salut c'est mon début avec Handsontable et j'essaye d'implémenter une fonctionnalité dans laquelle les valeurs de liste déroulante d'une cellule dépend de la valeur d'une autre cellule. Lors d'un événement de modification de la cellule 1, je souhaite charger la nouvelle source de données dans la ligne 2 qui est une cellule déroulante.Réglage dynamique des données de la cellule déroulante dans handontable

Lorsqu'un utilisateur sélectionne une valeur dans la cellule d'un hôtel, l'appel ajax est effectué pour trouver les types de pièce. Je souhaite que les types de chambres soient disponibles dans la cellule de type de pièce adjacente au champ d'hôtel modifié.

Aidez-moi s'il vous plaît. Merci

Répondre

3

Vous pouvez jeter un oeil à afterChange afin de déclencher des changements dans la cellule 1.
Ensuite, vous pouvez utiliser setCellMeta pour mettre à jour la source de données du nombre de cellules 2.
Enfin, jetez un oeil à le autocomplete with ajax source, puisque la liste déroulante est basée sur la saisie semi-automatique, elle fonctionnera de la même manière.

Votre code ressemblera que:

var myTable = new Handsontable($(...), { 
    ..., 
    afterChange: function (change, source) { 
     //choose the source you want to trigger, accordingly to the doc 
     if((source == 'edit' || source == 'autofill' || source == 'paste')) 
     { 
      /*if you have multiples lines in your handsontable, then 
       the change array has one line per line in your table */ 
      for(var i = 0 ; i < change.length ; i++) { 
       // I suppose here cell 2 is in row 2 (second argument) 
       myTable.setCellMeta(
        change[i][0], 
        2, 
        'source', 
        function(query,process) { 
         $.ajax({...}) 
        } 
       ) 
      } 
     } 
+0

Merci, mais maintenant mon code ne fait pas une demande ajax, voici le code 'afterChange: function (changement, source) { if ((source == 'edit' || source == 'autofill' || source == 'coller' || source == "modifier" && changer [0] [1] == 6 && change.length == 1)) { hot.setCellMeta ( change [0] [1], 7, 'source', function() {$ .ajax ({ url: 'get_room_types', type de données: 'json', méthode: 'GET', data: {hotel_name: change [0] [3]}, succès: function (réponse) {process (response.data); }}); })} ' –

+0

Essayez de changer les parenthèses dans la condition' if ((source == 'edit' || source == 'autofill' || source == 'coller') && change [0] [1] == 6 && change.length == 1) ', et dans setCellMeta, vous utilisez change [0] [1] comme numéro de ligne mais c'est le numéro de colonne. Je suppose que vous avez changé l'url, parce que je pense que celui-ci ne fonctionnera pas –

+0

J'ai fait les changements mais toujours la requête ajax n'est pas appelée. –