JqGrid Добавить пользовательскую кнопку в строку - PullRequest
2 голосов
/ 30 мая 2010

Я пытаюсь добавить пользовательскую кнопку в JqGrid, который реализует процесс «Извлечь». По сути, в каждой строке есть кнопка «Извлечь», которая при нажатии должна иметь возможность отправить сообщение обратно на сервер и обновить корзину покупок, а затем изменить текст кнопки на «Отменить извлечение». Пока что у меня есть:

colNames: ['Id', ... , 'Action' ],
colModel: [
{ name: 'Id', sortable: false, width: 1, hidden: true},
...
{ name: 'action', index: 'action', width: 75, sortable: false }
],
...
gridComplete: function() {
            var ids = jQuery("#east-grid").jqGrid('getDataIDs');
            for (var i = 0; i < ids.length; i++) {
                var cl = ids[i];
                checkout = "<input style='height:22px;width:75px;' type='button' value='Check Out' onclick=\" ??? \"  />";
                jQuery("#east-grid").jqGrid('setRowData', ids[i], { action: checkout });
            }
        },
...

Где '???' это часть, которую мне нужно решить.

Заранее благодарю за помощь.

1 Ответ

9 голосов
/ 30 мая 2010

Мне кажется, что у вас уже есть глобальная функция JavaScript, такая как MyCheckOut, и вы вызываете ее внутри '???' площадь. Если вы добавите в эту функцию дополнительный параметр, такой как rowId, то вы можете просто перезаписать содержащуюся в вас кнопку <input> действия 'action', чтобы она указала на новую функцию MyCheckIn и имела соответствующий текст в value атрибут. Ваш код будет выглядеть следующим образом:

MyCheckOut = function (gridId,rowId) {
    // do Check Out
    // ...
    // replace "Check Out" button to "Check In"
    var checkIn = "<input style='height:22px;width:75px;' type='button' " + 
               "value='Check In' " +
               "onclick=\"MyCheckIn(jQuery('" + gridId + "')," +
               rowId + "); \"  />";
    jQuery(gridId).jqGrid('setRowData', rowId, { action: checkIn });
};

MyCheckIn = function (grid,rowId) {
    // do Check In
    // ..
    // replace "Check In" button to "Check Out" like in MyCheckOut 
};

jQuery("#east-grid").jqGrid({
    // ...
    colNames: ['Id', ... , 'Action' ],
    colModel: [
        { name: 'Id', sortable: false, width: 1, hidden: true},
        // ...
        { name: 'action', index: 'action', width: 75, sortable: false }
    ],
    // ...
    gridComplete: function() {
        var grid = jQuery("#east-grid");
        var ids = grid.jqGrid('getDataIDs');
        for (var i = 0; i < ids.length; i++) {
            var rowId = ids[i];
            var checkOut = "<input style='height:22px;width:75px;' " +
                           "type='button' value='Check Out' " +
                           "onclick=\"MyCheckOut('#east-grid'," +
                           rowId + ");\" />";
            grid.jqGrid('setRowData', rowId, { action: checkOut });
        }
    },
    // ...
});

Если у вас rowId не целое число, то вы должны поместить ' с обеих сторон от rowId.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...