Probleme de rafraichissement de la table

36 views
Skip to first unread message

akm...@gmail.com

unread,
Nov 30, 2016, 9:11:52 AM11/30/16
to ZnetDK
Bonjour,
J'ai deux difficultés :
1) J'ai ecris le code suivant dans le head de ma page
<script>
  $('#table_id').zdkdatatable('refresh');
</script>
mais j'ai cette erreur: Error message: 'cannot call methods on zdkdatatable prior to initialization; attempted to call method 'refresh''

2) je souhaiterais avoir des autocomplete sur les champs de type select

Merci d'avance

Pascal Martinez

unread,
Dec 2, 2016, 12:54:57 AM12/2/16
to ZnetDK
Bonjour,

1) L'appel de la méthode 'refresh' ne peut avoir lieu qu'après la création du composant "datatable". Si l'appel est réalisé dans la balise <head> tel que vous me l'avez indiqué, le composant "datatable" n'existe pas encore et vous obtenez le message d'erreur mentionné dans votre question.
Quel était votre but recherché en plaçant cet appel de la méthode 'refresh' dans la balise <head> ?

2) Concernant votre souhait d'avoir "des autocomplete sur des champs de type select", faites-vous allusion au composant graphique Dropdown ou Autocomplete ? Pouvez-vous m'en dire un petit peu plus ?

Pascal MARTINEZ

akm...@gmail.com

unread,
Dec 2, 2016, 5:31:05 AM12/2/16
to ZnetDK
1) Pour le 1er point: j'ai deux lien dans le menu à savoir "Liste des dossiers" et "Liste des consultations"

J'ai un bouton de création d'une consultation dans la barre d'action de la" Liste des dossiers". Lorsque je crée  une consultation à partir de ce bouton et que je clique sur "Liste des consultations" cette liste n'est pas rafraichir automatiquement  je suis obligé de mettre un bouton pour actualiser cette liste.

2)Pour le 2è point:

J'ai plusieurs clients que j'affiche dans un composant Dropdown et je veux pouvoir filtrer cette liste en tapant le nom comme le fait Autocomplete.

En fait je n'arrive pas a récupérer l'identifiant du client pour l'insérer dans la base de données quand j'utilise Autocomplete

Merci pour vos réponses cela m'encourage à m'investir d'avantage dans l’utilisation de ce framework.

Pascal Martinez

unread,
Dec 5, 2016, 5:41:43 AM12/5/16
to ZnetDK
Bonjour,

1) Concernant l'actualisation du contenu du composant Datatable, la solution consiste à intercepter l’événement de mise à jour réussie d'un dossier pour actualiser la liste des consultations.

Si par exemple :
  • Le formulaire de saisie d'un dossier a pour identifiant HTML 'form_dossier'.
  • Le tableau d'affichage de la liste des consultations a pour identifiant 'datatable_consultations'.
Ajoutez en fin de fichier de la vue (nommée par exemple 'vue_dossiers.php') contenant la définition HTML du formulaire de saisie d'un dossier (<form id='form_dossier'...>), le code JavaScript suivant :

<script>
$
(document).ready(function() {
   $
('#form_dossier').on('zdkformcomplete', function() {
     
/* Actualise le tableau des consultations à chaque mise à jour de dossier */
      $
('#datatable_consultations').zdkdatatable('refresh');
   
});
});
</script>

A noter que le tableau d'affichage des dossiers n'a pas besoin d'être actualisé car il est mis à jour automatiquement par le composant ZnetDK Actionbar.

2) Concernant l'utilisation du composant Autocomplete, la solution pour récupérer l'identifiant de l'élément sélectionné consiste à intercepter l’événement de sélection d'un élément afin d'affecter l'identifiant correspondant à un champ caché du formulaire.

Par exemple, le formulaire ci-dessous comprend le champ caché 'client_id' défini pour recevoir l'identifiant du client sélectionné via le composant Autocomplete.

<form id="mon_formulaire" class='zdk-form' data-zdk-action="moncontroller:monaction">
 
<input name="client_id" type="hidden">
 
<label>Client</label>
 
<input class="zdk-autocomplete" type="text" name="client_nom" data-zdk-action="moncontroller:clients">
 
<button class="zdk-bt-save" type="submit">Enregistrer</button>
</form>

<script>
$
(document).ready(function() {
 $
('#mon_formulaire input[name=client_nom]').on('zdkautocompleteselect', function(e,item) {
   
/* L'identifiant du client sélectionné est placé dans le champ caché 'client_id' */
    $
(this).find('input[name=client_id]').val($(item).data('value'));
 
});
});
</script>

Au clic du bouton "Enregistrer", l'identifiant du client sélectionné à travers le composant Autocomplete est envoyé en AJAX au contrôleur dans la variable POST "client_id".


En espérant vous avoir aidé à travers mes réponses,

Pascal MARTINEZ

akm...@gmail.com

unread,
Dec 19, 2016, 7:19:08 AM12/19/16
to ZnetDK
Merci pour vos réponses. J'arrive à avancer petit à petit dans mon projet.
Reply all
Reply to author
Forward
0 new messages