S'il n'y avait pas de données retournées par notre recherche actuellement, nous utilisons le rappel loadComplete
pour imprimer un message à l'utilisateur pour indiquer qu'il n'y a pas de données. Y a-t-il un moyen de configurer jqGrid pour imprimer un message "pas de données" dans la grille? Actuellement, nous l'imprimons dans un div
au-dessus de la grille, mais nous aimerions qu'il soit dans la grille actuelle.jqGrid - ne fournit aucun message de données dans la grille?
Répondre
jqGrid affiche « Aucun document à afficher » message ($.jgrid.defaults.emptyrecords
) seulement à la fin de la zone de téléavertisseur et seulement dans le cas si tous les suivantes ont lieu
- vous définissez un téléavertisseur
viewrecords: true
- le nombre actuel de comptes d'enregistrements (
reccount
de paramètres) est 0.
On ne sait pas me aucune façon « standard » pour afficher un message dans côté de la zone de données de la grille (en haut du corps de la grille). Il me semble que si vous avez besoin d'un tel message, vous devez continuer à utiliser div placé sur le corps de la grille et masquer/montrer à l'intérieur de la poignée d'événement loadComplete
.
Pour Oleg: Oui, vous avez raison, car jqGrid
affiche le message uniquement dans le pager, c'est-à-dire, navGrid. Donc placer un <DIV>
après la table jqGrid est le meilleur moyen d'afficher le message.
À Marcus: Voir l'approche ci-dessous de ce que j'ai fait dans l'un des projets. J'ai collé l'extrait de code HTML - et l'implémentation loadComplete
, où vous devez déclencher votre logique pour afficher le message "Aucun enregistrement à afficher".
HTML:
<pre>
<div class="cols jsGridOuter" style="position:relative;">
<table id="mandateList" class="jsStretchGridWidth"><tr><td></td></tr></table>
<div class="noResultsDiv gridNoRecords jstHidden">
<span class="notice"><label>No records to show</label></span>
</div>
<div id="pagination"></div>
</div>
</pre>
Java Script:
loadComplete: function() {
if (j$(this).getGridParam("records")==0)
{
j$('div#pagination').hide();
if (j$('div.noResultsDiv').hasClass('jstHidden'))
{
j$('div.noResultsDiv').removeClass('jstHidden');
}
}
else
{
j$('div#pagination').show();
if (j$('div.noResultsDiv').length>0)
{
j$('div.noResultsDiv').addClass('jstHidden');
}
}
}
Vous pouvez remplacer la table du corps html pour afficher votre message. Utilisez cette option pour le faire:
loadComplete: function() {
if ($('#Grid').getGridParam('records') === 0) {
oldGrid = $('#GridIdb2 tbody').html();
$('#Grid tbody').html("<div style='padding:6px;background:#D8D8D8'>No records found</div>");
}
else
oldGrid = "";
}
Utilisez le oldGrid var comme Auxiliar pour sauver ce que le jqGrid avait changé avant; avant de soumettre une nouvelle recherche, définissez l'ancienne valeur:
if(oldGrid!=""){
$("#Grid tbody").html(oldGrid);
}
Veuillez mettre en forme votre code (Ctrl-K fait des merveilles) lors de la publication, sinon ce sera juste illisible = difficile à comprendre. – raina77ow