2013-08-07 7 views
2

Привет, я пробовал эти два кода для вставки новой строки в slickgrid.Добавить новую строку в SlickGrid

код-1:

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

он вставляет как неопределенные в пятно ячейки сетки ..

код-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); 
      } 

код-2 уловы и дает ошибку .. я знаю, что я должен изменить код.!

+0

Какая ошибка? Как выглядит ваша спецификация столбца? –

+0

@Ates Goral: ошибка undefined является нулевым или не является объектом, моя спецификация столбца выглядит следующим образом: var columns = [{id: "secKey", name: "secKey", поле: "secKey", sortable: true, formatter : sectionLinkFormatter}]; – sree

ответ

1

Если вы используете Slick.DataView, вы должны использовать метод .addItem

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

@jatin patil я попробовал ур код, не определено. и в ur code2, где указать данные для вставки ..? Кавун ур код также вставляет неопределенные – sree

+0

я работал на тыс код ... дайте мне знать, какие-либо предложения от использования этого кода ... data1 [data1.length] = { \t \t \t \t \t ID: data1.length + Math. случайная(), \t \t \t \t \t secKey: $ ('# sectionButtonName') Val() \t \t \t \t \t \t \t \t \t};. \t \t \t \t \t grid1.setData (data1); \t \t \t \t \t grid1.render(); – sree

+0

в приведенном выше коде, фильтр не работает. Я должен теперь делать? – sree

9

Вы можете сделать это следующим образом, если вы используете DataView,

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

или вы можете сделать это, как следует, если вы не используете dataview,

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

Так я использовал ответ Джатина (остроумие) 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(); 
    }); 
Смежные вопросы