2010-12-10 15 views
3

J'essaie de générer une grille en utilisant jqgrid sur une table html. Je suis capable de faire cela, mais je veux afficher un message si aucune ligne n'est trouvée dans la table. Comment puis je faire ça?jqGrid tableToGrid - affiche le message si aucune ligne n'est trouvée dans la table

Voici mon code jquery ...

jQuery.extend(jQuery.jgrid.defaults, { 
       caption: "my list", 
       autowidth: true, 
       height: "100%", 
       hidegrid: false, 
       loadComplete: function() { 
        alert("Grid has been loaded"); 
       }, 
       colModel:[ 
        { name: 'date', index: 'date', width: 0, resizable: false }, 
        { name: 'icon', index: 'icon', width: 0, resizable: false }, 
        { name: 'shop', index: 'shop', width: 0, resizable: false }, 
        { name: 'delete', index: 'delete', width: 0, resizable: false } 
       ] 
      }); 
      tableToGrid("#item_table", { 
       colNames: ['Date', '', 'Shop', 'Delete'] 
      }); 

Répondre

6

Le message standard défini dans $.jgrid.defaults.emptyrecords (voir grid.locale-en.js) sera affiché par défaut uniquement en cas de remplissage jqGrid avec des données à distance chargées à partir du serveur (voir this answer). Le texte correspondant (voir grid.locale-en.js) "Aucun enregistrement à afficher" sera affiché sur le côté droit de la barre d'état.

Dans another answer J'ai montré comment forcer l'affichage du texte dans le cas de jqGrid rempli "local" (comme dans votre cas) ou comment afficher le texte correspondant dans la zone du corps de la grille (voir démos de la réponse) . Vous pouvez donc faire de même en cas de conversion de table existante en jqGrid en respectant tableToGrid. Le gestionnaire d'événements beforeRequest peut être défini dans le jQuery.jgrid.defaults ou en tant que propriété supplémentaire du second paramètre de la fonction tableToGrid. Si vous suivez la seconde démo, vous devez modifier le code de la fonction loadComplete que vous utilisez actuellement pour afficher/masquer la div avec le message "no rows" dans le corps de jqGrid.

+0

Le lien dans 'une autre réponse' est incorrect: il est identique au lien 'cette réponse'. Où trouver la réponse référencée et le code qui ne montre aucun message recods trouvé dans le corps de la grille? – Andrus

+0

@Andrus: Merci! J'ai mis à jour le lien vers [la réponse] (http://stackoverflow.com/a/4127666/315935) avec des démos. – Oleg

0

En fait ce n'est pas un bug. Si vous regardez dans jqGrid.css fichier que vous trouvez que chaque ligne de la table est appliquée avec un style « white-space: pre »

.ui-jqgrid tr.jqgrow td {font-weight: normal; overflow: hidden; white-space:pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;} 

Si vous supprimez ce style (de toutes les classes/* corps */section) alors vous voudrez être forcé de mettre le contenu de cellule dans une ligne avec la balise.