2010-11-02 4 views
4

Lorsque j'utilise la propriété editurl dans jqgrid, l'action du contrôleur est appelée après avoir appuyé sur le bouton submit lors de l'ajout d'une nouvelle ligne. Mais comment puis-je obtenir toutes les lignes de la grille là-bas? Quel paramètre devrais-je lire de ma méthode d'action de contrôleur pour obtenir les données de grille?jqgrid editurl: paramètres d'action du contrôleur

Code Grid:

$("#list1").jqGrid({ 
      url: '/CMS/GetCustomLanguageData', 
--- 
---     
editurl: '/CMS/SaveCustomLanguageData' 
--- 

Ajouter un nouveau code de ligne:

grid.jqGrid('editGridRow',"new",{height:280,reloadAfterSubmit:false,addCaption: "Add Record", 
    editCaption: "Edit Record", 
    bSubmit: "Submit", 
    bCancel: "Cancel", 
    bClose: "Close", 
    saveData: "Data has been changed! Save changes?", 
    bYes : "Yes", 
    bNo : "No" 
}); 

Code Controller:

public ActionResult SaveCustomLanguageData() 
{ 
} 
+0

Pourriez-vous inclure la définition de la colonne ('colModel') dans votre question, alors ma réponse pourrait être plus claire. Quel type a l'identifiant que vous utilisez (int ou string)? – Oleg

Répondre

4

envoyer jqGrid au contrôleur des paramètres nommés avec le nom que vous avez défini dans la propriété 'name' du colModel. En outre sera envoyer oper=add et id=_empty. Donc, votre action de contrôleur peut ressembler à la suite

public JsonResult SaveCustomLanguageData (string id, string oper, MyObject item) 
{ 
    // test id for "_empty" or oper for "add". 
    // If so add the item and return the value of the new id 
    // for example return Json ("123"); 
} 

sur le côté client, vous devez décoder la réponse JSON par exemple avec le code suivant

jQuery.extend(jQuery.jgrid.edit, { 
    afterSubmit: function (response, postdata) { 
     return [true, "", jQuery.parseJSON(response.responseText)]; 
    } 
}); 
+0

Merci @Oleg! Vous avez résolu mon problème .. –

Questions connexes