2010-04-23 7 views
1

je tentais de faire une cellule d'édition basée sur cette documentation http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editingRécupérer Id Grille sur cellEdit jqGrid

J'ai deux questions:

  1. Comment puis-je obtenir l'indice de ma ligne affichée au serveur: les informations que je reçois est posté ce qui suit: a) la valeur de la cellule b) rowid

la chose est tha t le rowId ne m'aide pas. J'ai besoin de l'ID réel de l'information que je montre afin que je puisse faire la mise à jour du serveur avec cet ID.

colnames: [ 'id', 'CODIGO', 'Nombre'],

colModel: [ {name: 'id', index: 'id', largeur: 50, align: 'gauche' , caché: true},

{name: 'Codigo', index: 'Codigo', largeur: 55, align: 'gauche', modifiable: true, editrules: {numéro: true}},

{name: 'Nombre', index: 'Nombre', largeur: 200, align: 'left'}],

J'ai besoin de la valeur de la colonne 'Id' faire ma mise à jour.

2. Je ne comprends pas dans la documentation comment gérer une erreur du serveur, donc je peux afficher le message d'erreur.

Merci beaucoup!

Notes:

a) J'ai déjà demandé dans le forum de trirand, mais pas une seule réponse à moi.

b) Si quelqu'un l'a fait, il serait utile de m'aider à coller le code.

c) Je travaille sur MVC 2 Asp.net

Répondre

0

la plupart du temps une édition en ligne vous ou éditer la forme et non l'édition cellulaire. Je vous recommande de passer à l'une des deux édition moderne de formulaire ou vous

  1. L'information RowId est déjà la valeur de la colonne 'Id'. getInd(rowid,false) La méthode renvoie l'index de la ligne dans la table de grille spécifiée par id = rowid.
  2. Pour pouvoir afficher les retours d'erreur du serveur, vous devez connaître le format des données renvoyées par le serveur dans le cas d'erreur.Si l'erreur renvoyée par le serveur a, par exemple, le format JSON {"Detail":"error text"} (erreurs du service WFC), vous pouvez définir le paramètre loadError de jqGrid comme:

    loadError: fonction (xhr, st, err) {alert (errorTextFormat (xhr)) ; }

où la fonction errorTextFormat qui décodent le message d'erreur et peut ressemble

var errorTextFormat = function (data) { 
    var str = data.responseText.substr(0, 10); 
    if (str === '{"Detail":') { 
     var errorDetail = jQuery.parseJSON(data.responseText); 
     var s = "Error: '"; 
     s += data.statusText; 
     s += "'. Details: "; 
     s += errorDetail.Detail; 
     return s; 
    } else { 
     var res = "Status: '"; 
     res += data.statusText; 
     res += "'. Error code: "; 
     res += data.status; 
     return res; 
    } 
}; 

La même fonction que vous pouvez utiliser pour décoder les erreurs d'édition de ligne (au moins l'édition en ligne ou édition de formulaire). ASP.NET MVC renvoie principalement des messages au format HTML, donc votre fonction de décodage d'erreur devrait en être une autre. Je n'utilise pas l'édition de cellules comme le font la plupart des gens, donc je ne peux pas vous aider dans le cas ou la personnalisation des messages d'erreur dans l'édition de cellules.

+0

Merci Oleg, je vais essayer l'édition en ligne. J'étais juste curius au sujet de l'édition de cellules, parce que j'ai juste besoin que cette cellule soit éditée. Mais ma question n'a pas de réponse. Comment puis-je envoyer le 'Id' au serveur? – Sanchitos

+0

Juste trouvé, que vous m'avez demandé une fois. Probablement votre problème est maintenant résolu. Probablement vous avez trouvé maintenant que les données qui seront envoyées après qu'on modifie par exemple la colonne 'Nombre' ressemble à 'Nombre = NewData & id = 2 & oper = edit' donc le problème avec l'identification de la colonne que vous demandez n'existe pas. Vous avez à la fois rowId et le nom de la colonne (qui est le même que "column 'Id" "). – Oleg

0

Q1: vous pouvez utiliser la clé: true, modifiable: true, dans colModel

{ key:true, name: 'Id', index: 'Id', width: 50, align: 'left', editable: true, hidden:true} 

    Then in add/edit method (add beforeShowForm method in add/edit method), you have to explicitly hide this field the field of id inside of beforeShowForm method 
    $('#tr_Id').hide(); 

    i.e 
     beforeShowForm: function (e) { 
        $('#tr_Id').hide(); 
       } 

Q2:

add 'afterSubmit' method in add/edit/delete method , i'm using Web api Server , 
    i.e 
     afterSubmit: function (response) { 
      if (response.statusText == 'Created') { 
       // alert("Create Successfully") 
       ShowMessage("Add Successfully", 'Success'); 
       //reload the grid 
       $(this).jqGrid("setGridParam", { datatype: 'json' }); 
       return [true]; 
      } 
      else { 
       ShowMessage("Operation Failed", 'Error'); 
       return [false]; 
      } 

     }, 

J'espère que cela fonctionnera pour vous. Encore besoin de tout type d'aide s'il vous plaît commentaire ci-dessous

Questions connexes