2013-08-07 4 views
2

Bonjour, j'ai essayé ces deux codes pour insérer une nouvelle ligne dans slickgrid.Ajouter une nouvelle ligne à SlickGrid

code 1:

data1.push({id: "12345", name: "secKey", field: "secKey", complete:true}); 
     //grid1.setData(data1); 
     //grid1.render(); 

on insère comme définie dans la cellule de grille lisse ..

codes-2:

try{ 
      var rowData = grid1.getData(); 
      //alert(rowData+"rowdata"); 

      newId = dataView1.getLength(); 
      //alert(newId); 
      newRow.id = newId + 1; 
      //alert(newRow.id); 
      var newRow = {title: "new Title"}; 
      //alert(newRow); 
      dataView1.insertItem(newRow.id, newRow); 
      alert("end"); 
      }catch(e){ 
       alert("error:"+e.description); 
      } 

le code à 2 prises et donne l'erreur ..let me sais wat je dois faire le changement de code.!

+0

Quelle est l'erreur? À quoi ressemble votre spécification de colonne? –

+0

@Ates Goral: l'erreur est indéfinie est null ou un objet, ma spécification de colonne se présente comme suit var columns = [{id: "secKey", name: "secKey", champ: "secKey", triable: true, formateur : sectionLinkFormatter}]; – sree

Répondre

1

Si vous utilisez Slick.DataView, vous devez utiliser la méthode .addItem

dataView.beginUpdate(); 
dataView.addItem(item); 
dataView.endUpdate(); 
+0

@jatin patil J'ai essayé le code ur, undefined est inséré. et dans votre code2 où spécifier les données à insérer ..? Kavun ur code insère également – sree

+0

undefined Je suis arrivé à travailler par code ths ... laissez-moi savoir des suggestions d'utilisation de ce code ... data1 [data1.length] = { \t \t \t \t \t id: data1.length + Math. aléatoire(), \t \t \t \t \t secKey: $ ('# sectionButtonName') val() \t \t \t \t \t \t \t \t \t};. \t \t \t \t \t grid1.setData (données1); \t \t \t \t \t grid1.render(); – sree

+0

dans le code ci-dessus, le filtre ne fonctionne pas.wat devrais-je faire maintenant? – sree

9

Vous pouvez le faire comme suit si vous utilisez dataview,

 
function AddNewRow() { 
    dataView.addItem({id: "12345", name: "secKey", field: "secKey", complete:true}); 
    dataView.refresh(); 
} 

ou vous pouvez le faire aussi suit si vous n'utilisez pas dataview,

 
    function AddNewRow() { 
     grid.getData().splice(grid.getDataLength(), 1, {}); 
     grid.invalidateRow(grid.getSelectedRows()); 
     grid.updateRowCount(); 
     grid.render(); 
    } 
0

Voici comment j'ai utilisé la réponse de Jatin (esprit hout dataview):

slickgrid.onAddNewRow.subscribe(function (e, args) { 
     var newRow = args.item; 
     newRow.prop1= true; 
     newRow.prop2= false; 
     newRow.prop3= 0; 
     newRow.prop4= ""; 

     args.grid.getData().splice(args.grid.getDataLength(), 1, newRow); 
     args.grid.invalidateRow(args.grid.getDataLength() - 1); 
     args.grid.updateRowCount(); 
     args.grid.render(); 
    }); 
Questions connexes