jqgrid comment montrer le côté serveur de messages
Je suis en utilisant jqGrid
pour afficher les données sous forme de tableaux, à l'aide de JSP
et servlet
.
MODIFIER
Je veux montrer les erreurs de serveur, lorsque les opérations comme insert, update, delete
sont effectuées. (datatype: "xml")
JQGrid
jQuery("#list10_d").jqGrid({
height:250,
width:600,
url:'Assignment?action=Assign',
datatype: "xml",
colNames:['Sr. No.','PID', 'DATE', 'EMPID'],
colModel:[{name:'srNo',index:'srNo', width:30,sortable:false},
{name:'PID',index:'PID',width:0, sortable:true,editable:false},
{name:'DATE',index:'DATE', width:75,sortable:true,editable:true,editoptions: { dataInit: function(el) { setTimeout(function() { $(el).datepicker({dateFormat:"dd-M-yy",showButtonPanel: true,changeYear: true,changeMonth: true}).attr('readonly','readonly'); }, 200); }}},
{name:'EMPID',index:'EMPID', width:150,sortable:true,editable:true}
],
rowNum:10,
rowList:[10,20,50,100],
pager: '#pager10_d',
sortname: 'PID',
viewrecords: true,
sortorder: "asc",
},
multiselect: true,
editurl: "Assignment?action=Edit",
caption:"Assignment"
} ).navGrid('#pager10_d',{edit:false,add:true,del:false,addtext:'Assign '},
{},
{modal:true,jqModal: false,closeOnEscape:true,savekey: [true,13],closeOnEscape:true, recreateForm: true,width:500,mtype:'POST', url: 'Assignment',editData:{action: 'Assign',PID: function () {return PID;}},
afterSubmit: function (response) {
alert('After Submit \n' +'statusText: '+ response.statusText);
var myInfo = '<div class="ui-state-highlight ui-corner-all">'+
'<span class="ui-icon ui-icon-info" ' +
'style="float: left; margin-right: .3em;"></span>' +
response.statusText + 'Inserted'+
'</div>',
$infoTr = $("#TblGrid_" + $.jgrid.jqID(this.id) + ">tbody>tr.tinfo"),
$infoTd = $infoTr.children("td.topinfo");
$infoTd.html(myInfo);
$infoTr.show();
//display status message to 3 sec only
setTimeout(function () {
$infoTr.slideUp("slow");
}, 5000);
return [true, "", ""]; //response should be interpreted as successful
},
errorTextFormat: function (response) {
alert('Error Text Format: \n' +'statusText: '+ response.statusText);
return '<span class="ui-icon ui-icon-alert" ' +
'style="float:left; margin-right:.3em;"></span>' +
response.statusText;},
{closeOnEscape:true, recreateForm: true,mtype: 'POST',url: 'Assignment',delData: {action: 'Delete',PID: function () {return PID;}}},
{}) ;
Servlet Code
if(request.getParameter("action").equalsIgnoreCase("Assign"))
{
PID = request.getParameter("PID");
String DATE= request.getParameter("DATE");
String EMPID= request.getParameter("EMPID");
String query = "insert into ASSIGN(PID,DATE,EMPID) values('"+ PID +"','"+ DATE +"','"+ EMPID"')";
boolean b = insert.InsertData(query);
if(b)
{
System.out.println("New record added successfully! : "+query);
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
//response.sendError(200, "success");
response.setStatus(200, "Inserted successfully");
}
else
{
System.out.println("Failed to add Record! : "+query);
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
//response.sendError(399, "not Inserted successfully");
response.setStatus(404, "Error while inserting");
}
}//INSERT
pour l'exemple ci-dessus
- après
inserting
record de jqgrid, puisNo message is shown
dans
grille si l'enregistrement estinserted successfully
error Status: 'Unauthorized'. Error code: 401
est montré si servlet ne parvient pas à insérer un enregistrement dans la base de données.
Ma Question est que:
- après
inserting
record de jqgrid, si l'enregistrement est inséré alors comment dois-je afficher un message donnant des informations à l'utilisateur que les données sont insérées. - et comment dois-je donner un message à l'utilisateur que
Error while inserting
(quierror code
dois-je utiliser pour cela?)
Merci d'avance.....
OriginalL'auteur Bhushan | 2013-01-18
Vous devez vous connecter pour publier un commentaire.
Je l'ai suggéré dans la vieille réponse et dans un autre d'utiliser l'existant, caché ligne de la forme d'une grille (
tr.tinfo
) pour afficher des informations qui ne sont pas d'erreur. Parce que les réponses ne sont pas bien connus, je répète la même information ici, mais je vais essayer de vous expliquer tous les plus détaillées.Tout d'abord, il est important de comprendre quels éléments de la norme Modifier/Ajouter un formulaire. Utilisant les Outils de développement d'IE ou Chrome, Firebug ou de nombreux autres de l'outil, on peut facilement constater que le Ajouter/Modifier un formulaire créé par jqGrid contient caché par deux lignes sur le dessus de la forme:
La première ligne sera utilisé par défaut, le message d'erreur. On peut utiliser
errorTextFormat
pour personnaliser les informations un peu.Si la réponse du serveur contient une erreur de code de statut HTTP (>=400), puis le rappel
errorTextFormat
sera appelée, et vous pouvez utiliserou quelque chose comme
pour afficher un message d'erreur comme
De la même manière, on peut utiliser
afterSubmit
de rappel pour afficher de message d'état après l'envoi d'édition/ajout de données si la réponse du serveur contient des succès Le code d'état HTTP. La mise en œuvre deafterSubmit
pourrait être la suivanteLe code affiche le message d'état pour les 3 sec seulement abd utilise ensuite jQuery.slideUp animation de la cacher. Il ressemblera à
J'espère que c'est ce dont vous avez besoin.
Vous êtes les bienvenus!
j'ai mis à jour ma question, après la mise en œuvre de votre code, les messages sont affichés en haut de l'écran que vous avez montré dans l'image, mais seulement le code d'état sont affichés, comme lorsqu'il est inséré avec succès que
OK
est indiqué, et quand pas réussi à insérer, puis seulementNot Found
est montré, mais je ne suis pas en mesure de montrercustom
message envoyé par la servlet en forme.. j'ai fait une erreur lors de l'envoi d'erreur de servlet pour la grille? toute aide sera appréciée...Probablement que vous avez utilisé réponse.statusText instread de réponse.responseText. Pourriez-vous comparer le code actuel de ma réponse avec les jeunes?
j'ai utilisé
response.responseText
, mais il n'affiche rienOriginalL'auteur Oleg
J'ai fait quelque chose de similaire sur un edit appel à mon serveur donc je pense que cela fonctionnerait de manière très similaire à un complément.
Sur le contrôleur, après une éditer/supprimer/ajouter un appel vous permettrait de déterminer si il y a un message à transmettre à l'utilisateur et, si oui, passer par le JSON XML (dans votre cas) vers la grille.
Ex
Dans votre jqGrid vous auriez votre modifier/supprimer/ajouter une fonction:
Ainsi, dans l'exemple ci-dessus si l'opération a été un échec, vous pouvez afficher un message avec un
success = false
ou si l'opération est terminée mais vous l'envie de transmettre des informations supplémentaires à l'utilisateur que vous pourriez aussi bien avecsucess = true
&&showMessage = true
.C'est un JSON exemple de modifier, mais les concepts et la logique devrait être la même pour XML et un ajout/suppression.
OriginalL'auteur Mark