2014-07-21 4 views
0

Я использую SetRowData установить некоторые строки данных в jqGridSetRowData и DirtyCells

jqColModel = gJqGrid.jqGrid('getGridParam','colModel'); 
rowData = gJqGrid.jqGrid('getRowData', rowid); 
for (var i=0; i<newData.length; i++){ 
    rowData[jqColModel[i+1].name] = newData[i]; 
} 
gJqGrid.jqGrid('setRowData', rowid, rowData); 

Это работает, как ожидалось. Строка jqGrid обновляется со значениями из объекта newData.

Я тогда пытаюсь получить все измененные клетки с помощью

jqRows = gJqGrid.jqGrid('getChangedCells', 'dirty'); 

, но это, кажется, не работает. Я пытаюсь партии всех изменений и создать пользовательский сохранить событие

Мое определение сетки, как показано ниже

$(gJqSel_Table).jqGrid({ 
     caption  : 'jqGrid' 
    , datatype : 'local' 
    , loadonce : true 
    , data  : formattedLineData 
    , colNames : customColNames 
    , colModel : customColModel 
    , autoencode : true 
    , rowNum  : 1000 
    , keys  : true 
    , sortable : false 
    , hidegrid : false 
    , multiselect : false 
    , altRows  : false 
    , height  : '100%' 
    , autowidth : true 
    , shrinkToFit : true 
    , cellEdit : gSettings.editMode 
    , cellsubmit : 'clientArray' 
    , afterEditCell : function (rowid) { 
     var $editControl = $("#" + rowid).find("input, select, textarea"); 

     if ($editControl){ 
      $editControl.on('paste', function(e) { 
       GridPaste(e, rowid); 
      }); 
     } 
    } 
}); 

Может кто-то обеспечить некоторые рекомендации о том, как я могу

  • использования объект JSON для установки всех значений ячеек строки

  • помещает каждую ячейку в строке как грязную, так что метод getChangedCells знает, что стоимость изменились?

ответ

0

После прочтения дополнительной документации jqGrid Я нашел этот

setRowData

Не использовать этот метод при редактировании строки или ячейки. Это будет установить содержимое и перезаписать входные элементы.

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods

Изменение моего кода использовать метод setCell работы

  • Значение ячейки обновляется
  • Cell отмечен как грязный и включены в getChangedCells результаты

Мой код ниже

jqColModel = gJqGrid.jqGrid('getGridParam','colModel'); 
for (var i=0; i<newData.length; i++){ 
    colName = jqColModel[i].name; 
    gJqGrid.jqGrid('setCell', rowid, colName, newData[i], 'dirty-cell'); 
} 

Обновлено

Как @Oleg отметил в комментариях, я также должен был добавить следующее, чтобы отметить jqGrid линию в редакции:

gJqGrid.setRowData(rowid, false, 'edited'); 
+1

одна потребность добавьте '' отредактированный '' класс в строки ('' элементов) дополнительно с добавлением '' грязных ячеек '' в ячейки ('' элементов). Вы можете использовать 'getInd' (' gJqGrid.jqGrid ("getInd", rowid, true) ') или' $ ("#" + rowid) 'для получения элементов' '. См. [Исходный код] (https://github.com/tonytomov/jqGrid/blob/v4.6.0/js/grid.celledit.js # L466-L471) метода getChangedCells. – Oleg

+0

Спасибо @Oleg Я использовал 'setRowData (rowid, false, 'edit')' для установки класса строк. Кажется, это работает. Спасибо за ваш комментарий – jasonscript

+0

Добро пожаловать! – Oleg

Смежные вопросы