Rechargement de jqgrid ne se passe pas avec loadonce:vrai
Je suis novice dans l'utilisation de jqgrid.
Tout nouveau chargement de la page, la grille est correctement charger les données à partir de la base de données. Par la suite en raison de loadonce: vrai la grille n'est pas le rechargement des données de la base de données pour ajouter/modifier/supprimer.
Ma demande combinaison est JSP, Servlet, MySQL
J'ai une grille avec les paramètres suivants
jQuery("#userList").jqGrid({
url: '<%=request.getContextPath()%>/userJqGrid?q=1&action=fetchData&userCookie=<%= encodedCookie%>',
datatype: 'xml',
mtype: 'GET',
colNames:['<%= userProp.getProperty(userColNames[0])%>',
'<%= userProp.getProperty(userColNames[1])%>',
'<%= userProp.getProperty(userColNames[2])%>',
'<%= userProp.getProperty(userColNames[3])%>',
'<%= userProp.getProperty(userColNames[4])%>',
'<%= userProp.getProperty(userColNames[5])%>'
],
colModel:[
{name:'<%= userColNames[0]%>',index:'<%= userColNames[0]%>',
width:120,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:1, elmprefix:'*'}},
{name:'<%= userColNames[1]%>',index:'<%= userColNames[1]%>',
width:130,sortable:true,editable:true},
{name:'<%= userColNames[2]%>',index:'<%= userColNames[2]%>',
width:100,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:3, elmprefix:'*'}},
{name:'<%= userColNames[3]%>',index:'<%= userColNames[3]%>',
width:180,sortable:true,editable:true,editrules:{email:true,required:true},formoptions:{rowpos:4, elmprefix:'*'}},
{name:'<%= userColNames[4]%>',index:'<%= userColNames[4]%>',
width:100,sortable:true,editable:true},
{name:'<%= userColNames[5]%>',index:'<%= userColNames[5]%>',
width:100,sortable:true,editable:true},
],
pager: '#pager1',
rowNum:50,
height:'auto',
//rowList:[10,20,30],
loadonce: true,
sortname:'<%= userColNames[0]%>',
viewrecords: true,
editurl:'<%=request.getContextPath()%>/userJqGrid?q=1&action=addData&userCookie=<%= encodedCookie%>',
caption: 'User Grid',
ondblClickRow: function(rowid) {
$("#userList").jqGrid('editGridRow',rowid, userEditParam);
return;
}
});
$("#userList").jqGrid('navGrid',"#pager1",{add:true,edit:true,del:true});
$("#userList").jqGrid('gridResize', { minWidth: 450, minHeight: 150});
J'ai essayé d'ajouter de code suivant pour recharger
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid')
Peut-on aider?
Solution qui a fonctionné pour moi
$("#userList").jqGrid('navGrid',"#pager1",{add:true,edit:true,del:true,refresh:true,
beforeRefresh: function() {
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid');
}},
{
afterSubmit: processAddEdit,
closeAfterAdd:true,
closeAfterEdit:true
},{
aftersubmit:processAddEdit,
closeAfterAdd:true,
closeAfterEdit:true
});
function processAddEdit() {
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid');
return[true,'']; //no error
}
OriginalL'auteur Natraj | 2011-08-15
Vous devez vous connecter pour publier un commentaire.
Correcte est
datatype:'xml'
et pasdatatype:xml
. Donc le code commedevrait fonctionner. Voir ici pour la description des paramètres supplémentaires de
reloadGrid
.Mis à JOUR: à Partir de vos commentaires, je l'espère, que je sais où vous avez un problème avec la mise en œuvre. Si je comprends bien vous corriger maintenant, vous voulez que "Recharger la Grille" sur le bouton de la barre de navigation de la recharge de la grille à partir du serveur. Pour ce faire, vous devez redéfinir la norme "Recharger la Grille" bouton avec votre mise en œuvre qui ne le code que j'ai mis dans ma réponse (voir ci-dessus). Donc, vous devriez utiliser
refresh: false
comme le navGrid option de suppression de la norme de "Recharger la Grille" bouton, puis utilisez navButtonAdd pour ajouter un nouveau bouton qui ressemble exactement comme le bouton standard et ont personnalisé la mise en œuvre ou laonClickButton
événement:Mise à JOUR 2: Pour forcer le rechargement de la grille après que Ajouter et de Modifier des opérations que vous pouvez utiliser
afterSubmit
événement, qui sera appelé après la réception de la réussite de la réponse du serveur, mais avantreloadGrid
faite par le jqGrid.Je ne suis pas sûr que le rechargement de la grille à partir du serveur qui est vraiment nécessaire, après de Modifier et de Supprimer des opérations en général, mais de rechargement après l'opération d'Ajout pourrait être nécessaire si le serveur ne retourne la nouvelle carte d'identité dans la réponse du serveur. Vous pouvez définir
reloadAfterSubmit: false
et de retour de la nouvelle carte d'identité dans la réponse du serveur. Voir cette et cette réponses pour plus de détails.Désolé, mais je ne comprends pas pourquoi vous place reloadGrid' après le 'gridResize'. La grille de a déjà
datatype: 'xml'
à la définition. Ainsi, le jqGrid va essayer de remplir la grille par l'appel Ajax deurl
. Si vous venez de passer un appel de'reloadGrid'
pendant l'attente d'une requête ajax de rechargement seront rejetées. Pourriez-vous d'abord expliquer pourquoi et quand vous devez recharger la grille?Je veux avoir un côté client, le tri et la navigation par conséquent, j'ai mis 'reloadOnce" comme vrai. En Plus je vais être l'ajout/modification/suppression d'un enregistrement à l'aide de la fonctionnalité intégrée de la grille. Je veux l'afficher dans la grille quand ils sont sauvegardés dans la base de données.
J'ai mis à jour ma réponse.
Je ne suis pas sûr que je vous comprends correct, mais si tu veux Ajouter/Modifier/Supprimer des formulaires puis la fraîcheur problème peut être semelles par l'utilisation de
recreateForm: true
option de modification du formulaire. Voir ici, ici etc.OriginalL'auteur Oleg
Merci,
fonctionne pour moi.encore une fois merci beaucoup.
OriginalL'auteur Swati Pisal
Fonctionné pour moi :
Logique est que nous sommes le rechargement de la grille à nouveau, après l'appel renvoie à la JqGrid....essayez cela fonctionne
OriginalL'auteur Akhil Sharma