jqgrid charge de grand ensemble de données, sans pagination
Je me demandais si il ya une meilleure façon de charger de gros Json ensemble de données à partir du serveur.
Je suis en utilisant jqgrid comme loadonce:vrai. j'ai besoin de charger environ 1500 dossiers à la fois et aussi je n'utilise pas les options de la pagination. est-il meilleure façon d'atteindre cet objectif? Je vous remercie à l'avance.
C'est mon code de réseau -
$(function(){
$("#testgrid").jqGrid({
url:getGridUrl,
datatype: 'json',
mtype: 'GET',
height: 250,
colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
colModel:[
{name:'id',index:'id', width:60, sorttype:"int",search:false},
{name:'invdate',index:'invdate', width:90, sorttype:"date",search:false},
{name:'name',index:'name', width:100,search:false},
{name:'amount',index:'amount', width:80, align:"right",sorttype:"float"},
{name:'tax',index:'tax', width:80, align:"right",sorttype:"float",search:false},
{name:'total',index:'total', width:80,align:"right",sorttype:"float",search:false},
{name:'note',index:'note', width:150, sortable:false,search:false}
],
multiselect: true,
multiboxonly:true,
caption: "Manipulating Array Data",
pager: '#testgridpager',
//Auto load while scrolling
//scroll: true,
//to hide pager buttons
pgbuttons:false,
recordtext:'',
pgtext:'',
loadonce: true,
sortname: 'id',
sortorder: 'asc',
viewrecords: true,
multiselect: true,
jsonReader : {
root: "rows",
//page: "page",
//total: "total",
records: "records",
repeatitems: false,
cell: "cell",
id: "id"
},
loadComplete: function(data) {
var rowId;
//alert(data.length);
//alert('load complete'+data.rows.length);
//set checkboxes false if mode is set to true
if(mode){
for(var i=0;i<data.rows.length;i++){
rowId=data.rows[i].id;
disableRow(rowId);
var searchVal = $("#gs_amount").val().trim();
if(searchVal ==data.rows[i].amount){
jQuery("#testgrid").jqGrid('setSelection',rowId);
//heighlightSearch();
}
}
}
}
});
//toolbar search
$("#testgrid").jqGrid('filterToolbar',{stringResult:true,searchOnEnter:false});
});
function disableRow(rowId){
$("#testgrid").jqGrid('setRowData', rowId, false, {color:'gray'});
var trElement = jQuery("#"+ rowId,$('#testgrid'));
trElement.removeClass("ui-state-hover");
trElement.addClass('ui-state-disabled');
trElement.attr("disabled",true);
}
Pourriez-vous inclure le code javascript que vous utilisez actuellement? Utilisez-vous des locaux de la pagination des données? Utilisez-vous
Grâce oleg. j'ai utilisé gridView paramètre. veuillez trouver les mises à jour question.
Je suis très occupé maintenant, mais si votre problème ne sera pas résolu jusqu'à samedi, je vais vous écrire quelques suggestions. Ce n'
Merci pour votre temps précieux Oleg. c'est la grille que j'ai utilisé pour tester jqgrid. j'ai juste enlevé
Si vous avez un peu de temps pouvez-vous svp m'envoyer des instructions à propos de tout pour cette approche? si vous avez du temps à perdre..remercie de votre aide.
gridview:true
paramètre?Grâce oleg. j'ai utilisé gridView paramètre. veuillez trouver les mises à jour question.
Je suis très occupé maintenant, mais si votre problème ne sera pas résolu jusqu'à samedi, je vais vous écrire quelques suggestions. Ce n'
disableRow
? Je ne suis pas sûr que je comprends ce que vous faites à l'intérieur de loadComplete
. Si dans la barre de filtre pour amount
aucune donnée n'existe pas, vous devez ne rien faire. Si dans amount
les données existent, les données sont filtrées et vous devez sélectionner toutes les lignes. Est-ce donc? De plus je ne vois pas gridview:true
paramètre. Est l'exemple que vous avez posté l'exemple réel qui vous testé? Combien de temps est le chargement dans vos tests? Quel navigateur est le plus important pour vous?Merci pour votre temps précieux Oleg. c'est la grille que j'ai utilisé pour tester jqgrid. j'ai juste enlevé
gridview
param pour vérifier les conséquences. à l'intérieur de loadComplete si le amount
correspondre à la valeur de grille amount
il doit être sélectionnée. vous avez raison, je n'ai besoin de mettre de la case vide dans loadComplete. Je suis toujours à la recherche de la meilleure des façons pour ce faire(chargement de données de grande taille). IE 8 sera essentiel de mon navigateur. Merci pour votre réponse Oleg. Je vais impatient de vos pensées au sein de cette.L'apprécier.Si vous avez un peu de temps pouvez-vous svp m'envoyer des instructions à propos de tout pour cette approche? si vous avez du temps à perdre..remercie de votre aide.
OriginalL'auteur Sam | 2011-04-14
Vous devez vous connecter pour publier un commentaire.
Sur l'exemple de cette démo vous pouvez voir le temps de chargement de 1500 lignes de votre réseau en cas d'utilisation de
gridview: true
.La plupart des problèmes de performance de votre exemple à l'intérieur de
loadComplete
fonction. Si vous avez besoin de faire quelques modifications sur la grille, vous devez utiliser jQuery pour manipuler la grille contiennent. Les meilleures performances, vous pouvez archiver si vous utilisez des éléments du DOM de la grille directement comme dans l'exempleVous pouvez voir l'exemple correspondant vivre ici.
Dans la mise en œuvre de
loadComplete
fonction que j'utilise le fait, que jqGrid avoirloadonce:true
paramètre utiliser les paramètres internes_index
etdata
qui peut être utilisé pour accéder au contenu de la grille. Dans l'exemple que j'ai désactivé les lignes qui contiennent pas de "200" dans laamount
colonne.Mis à JOUR: La réponse décrit comment utiliser
rowattr
de rappel pour simplifier la solution et avoir la meilleure performance (en cas degridview: true
de cause).Vous êtes les bienvenus!
OriginalL'auteur Oleg
Je serais tenté de regarder dans le Chargement automatique sur la fonction de défilement de jqGrid. Je n'aurais jamais de charge de 1500 lignes à l'avance. Une raison quelconque vous ne pouvez pas la page?
la question peut-être son js/php qui sait. Je voudrais tester moi-même. Je suis sûr que d'autres l'ont mentionné, et c'est jusqu'à la version 4.0 maintenant.
OriginalL'auteur redsquare