Jgrid Сохранить ячейку при нажатии кнопки - PullRequest
2 голосов
/ 30 сентября 2010

Привет, я использую afterSaveCell, который срабатывает, если мы модифицируем ячейку, то она срабатывает.

Мой сценарий заключается в том, что я делаю пакетное обновление базы данных при нажатии кнопки Сохранить.Но когда пользователь редактирует ячейку и попадает в другую ячейку, я записываю изменение в массив.

Но если пользователь редактирует ячейку и нажимает кнопку «Сохранить изменение», фокус ячейки не теряется (Все еще в редактированииmode) и afterSaveCell не быть уволенным.

Есть ли способ выстрелить Сохранить ячейку по нажатию кнопки, чтобы afterSaveCell получил огонь.

Пожалуйста, помогите .. Спасибо..

Ответы [ 2 ]

3 голосов
/ 30 сентября 2010

Вы можете вызвать saveCell метод. Этот метод имеет iRow и iCol в качестве параметров. Чтобы узнать эти параметры для текущей редактируемой ячейки, вы можете добавить afterEditCell в сетку. Таким образом, вы сохраняете последние значения iRow и iCol в переменной вне jqGrid и используете их внутри события нажатия кнопки «Сохранить изменение», где вы вызываете saveCell с этими параметрами.

0 голосов
/ 21 октября 2014
// This worked Perfectly fine for me, hope will work for you as well.
var selectedCellId;
    var $gridTableObj = $('#jqGridTable');
    $gridTableObj.jqGrid({
        datatype : "jsonstring",
        datastr : gridJSON,
        height : ($(window).height() - 110),
        width : ($(window).width() - 80),
        gridview : true,
        loadonce : false,
        colNames : columnNames,
        colModel : columnModel,
        rowNum : gridJSON.length,
        viewrecords : true,
        subGrid : false,
        autoheight : true,
        autowidth : false,
        shrinkToFit : true,
        cellsubmit : 'clientArray',
        cellEdit : true,
        jsonReader : {
            root : "rows",
            repeatitems : false
        },
        onCellSelect : function(id, cellidx, cellvalue) { // use this event to capture edited cellID
            selectedCellId = cellidx; // save the cellId to a variable
        },
        loadComplete : function(data) {
            jQuery("tr.jqgrow:odd").addClass("oddRow");
            jQuery("tr.jqgrow:even").addClass("evenRow");
        }
    });

// Прикрепить при клике событие jqgrid "saveCell", чтобы сохранить ячейку.

var gridCellWasClicked = false;
window.parent.document.body.onclick = saveEditedCell; // attach to parent window if any
document.body.onclick = saveEditedCell; // attach to current document.
function saveEditedCell(evt) {
    var target = $(evt.target);
    var isCellClicked = $gridTableObj.find(target).length; // check if click is inside jqgrid
    if(gridCellWasClicked && !isCellClicked) // check if a valid click
        {
        var rowid = $gridTableObj.jqGrid('getGridParam', 'selrow');
    $gridTableObj.jqGrid("saveCell", rowid, selectedCellId);
    gridCellWasClicked = false;
    }
    if(isCellClicked){
        gridCellWasClicked = true; // flat to check if there is a cell been edited.
    }
};
...