2010-05-30 5 views
2

Я пытаюсь добавить пользовательскую кнопку в JqGrid, которая реализует процесс «Check Out». В принципе, каждая строка имеет кнопку «Отъезд», которая, если щелкнуть, должна иметь возможность отправить сообщение на сервер и обновить корзину покупок, а затем изменить текст кнопки на «Отменить проверку». До сих пор у меня есть: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 }); 
      } 
     }, 
... 

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

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

+0

Извините, но вы не сформулируете свой вопрос. Этот пример не работает? У вас проблемы с частью «???» или вообще какая помощь вам нужна? – Oleg

+0

Пример работает частично. Я могу создать кнопку и добавить функцию javascript без каких-либо проблем. Я должен решить следующее: Как переключить текст моей кнопки с «Check Out» на «Check In» и наоборот, после отправки запроса ajax на сервер? – oirfc

ответ

9

Мне кажется, что у вас уже есть глобальная функция JavaScript, например MyCheckOut, и назовите ее внутри '???' площадь. Если вы добавите к этой функции дополнительный параметр, например, rowId, то вы можете просто перезаписать содержимое кнопки <input> «действия», чтобы она указывала на новую функцию 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.

+0

Спасибо, Олег. Вы очень полезны, как обычно. Первая часть моей проблемы решена ('Check In' <=> 'Check Out'), теперь мне нужно отправить запрос ajax на сервер, чтобы обновить мою корзину покупок. Как я могу это достичь? – oirfc

+0

Как выглядит прототип на стороне сервера «Check In» и «Check Out»? Какие параметры следует отправлять на сервер? Вероятно, http://stackoverflow.com/questions/2737525/how-do-i-build-a-json-object-to-send-to-an-ajax-webservice/2738086#2738086 может вам помочь? – Oleg

+0

Прототип работает хорошо, точно так, как вы его закодировали. Что касается параметров отправки на сервер, мне просто нужно иметь возможность создавать/обновлять/удалять запись в списке или таблице на основе jquery rowId. Я думаю, что мне нужно сделать что-то вроде этого: http://stackoverflow.com/questions/2360550/custom-delete-button-in-jqgrid Как вы думаете? – oirfc

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