2011-04-21 3 views
3

J'ai un problème avec l'ajout d'une nouvelle ligne vide dans un jqgrid.jqgrid addrowdata problème

Mon colmodel est:

colModel: [{ name: 'recid', index: 'testid', hidden: true, editable: true, editrules: { edithidden: true} }, 
      { name: 'JobTask.Id', index: 'JobTask.Id', hidden: true }, 
      { name: 'InvolvedParty.Id', index: 'InvolvedParty.Id', hidden: true, editable: true, editrules: { edithidden: true} }, 
      { name: 'InvolvedParty.Lastname', index: 'InvolvedParty.Lastname', width: 100, align: 'left', editable: true}, 
      { name: 'deletefield', width: 100, sortable: false, title: false, align: 'center', label: ' '}], 

Le code que j'utilise pour insérer la ligne est:

var rowid = jQuery.Guid.New(); 
var newRowData = [{ "recid": rowid, "JobTask.Id": "@(Model.id)", "InvolvedParty.Id": "", "InvolvedParty.Lastname": "", "deletefield": ""}]; 
$("#grid_id").addRowData(rowid, newRowData); 

alors j'entrer des données et enregistrer la ligne avec

jQuery('#grid_id').saveRow(rowid); 

tout fonctionne bien. Maintenant, quand j'appuie de nouveau sur l'insertion, j'obtiens une ligne vide avec juste une cellule, qui n'est même pas éditable. Ma nouvelle ligne insérée doit avait deux champs lastname et deletefield qui contient deux boutons (suppression, sauvegarde).

Des idées pourquoi cela se passe-t-il?

Répondre

2

essayer au lieu de cette

var newRowData = [{ "recid": rowid, "JobTask.Id": "@(Model.id)", "InvolvedParty.Id": "", "InvolvedParty.Lastname": "", "deletefield": ""}]; 

faire:

var newRowData = { "recid": rowid, "JobTask.Id": "@(Model.id)", "InvolvedParty.Id": "", "InvolvedParty.Lastname": "", "deletefield": ""}; 
  • si cela ne fonctionne pas, assurez-vous que les lignes ajoutées pour que différentes ont ids

  • vous

    peut également essayer de recharger après avoir ajouté une nouvelle ligne par trigger(“reloadGrid”)

espoir qui aidera je n'ai pas plus d'idées

EDIT:

ok je maintenant ce qui était mal

du wiki jqGrid:

... Cette méthode peut insérer plusieurs lignes à la fois. Dans ce cas, les données paramètres doivent être ensemble définis comme [{nom1: valeur1, nom2: valeur2 ...}, {nom1: valeur1, nom2: valeur2 ...}] et la première rowid option doit contenir le nom à partir des données objet qui doit agir comme id de la ligne. Il n'est pas nécessaire que le nom de la rowid dans ce cas soit une partie de colModel.

que vous MEENS devriez pouvoir également utiliser [] comme ça:

var newRowData = [{ "recid": rowid, "JobTask.Id": "@(Model.id)", "InvolvedParty.Id": "", "InvolvedParty.Lastname": "", "deletefield": ""}]; 

$("#grid_id").addRowData("recid", newRowData); 
+0

Putain les crochets carrés étaient le problème, merci :) – zynaps

+0

oui vous avez raison sur le poste d'édition, il fonctionne De cette façon aussi, merci encore. – zynaps