2012-06-14 2 views
1

Итак, у меня есть jqgrid, и я использую пользовательские форматирующие элементы для форматирования столбцов, так или иначе, когда я нажимаю на заголовок столбца для сортировки, он сортирует столбцы, как ожидалось, но удаляет форматирование, которое я делал, и вместо этого помещает «объект объекта» в столбцы, в которых форматировщик должен был выполнить свою работу.JQGrid: Сортировка и пользовательские форматировщики

Конкретная форматировщик является:

function(cellVal, options, rowObject){ 
    var optsURI = '../webrelease/common/images/page_v2_u'+(rowObject.opt2Up==2?1:0)+'_s'+(rowObject.optDuplex?1:0)+'_c'+(rowObject.optColor?1:0)+'_52.png'; 
    return $('<img class="finishing_icon" height="40" src="'+optsURI+'" />').attr('jobid', rowObject.jobid).click(finishingOptsCycle); 
} 

Это, кажется, работает хорошо для удаления и добавления строк, но как только я попал прибегнуть к изменениям collumn из образа в строку [объект Object]

Любые идеи о том, как я могу это решить?

для полноты здесь вся моя jqgrid (включая строки & форматировщика):

grid.jqGrid({ 
    datatype: "local", 
    editurl: "clientArray", 
    width: 680, 
    height: 290, 
    colNames: [...], 
    colModel: [...], 
    hidegrid: false, 
    shrinkToFit:false, 
    multiselect: true, 
    scroll:1, 
    loadui: "block", 
    loadtext: "Loading job list...", 
    caption: 'Job List <img class="refreshbutton" width="20" height="20" src="../webrelease/desktop/images/icon_circle_arrow_right.png" />', 
    pager: '#jqgrid_pager', 
    onSelectRow: rowSelect, 
    onSelectAll: allRowsSelect 
}); 

ответ

2

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

Я не рекомендую назначать атрибут id элементам сетки, если это не требуется. Я не понимаю, почему вам нужно иметь <img> с идентификаторами.

Если вам нужно выполнить некоторые пользовательские действия при нажатии на ячейку с помощью <img>, вы можете лучше использовать обратный вызов onCellSelect.

Если вы еще не внедрены unformat за тот же столбец, где вы используете custom formatter Я рекомендую вам это сделать.

+0

Идентификатор включал функцию finishOptsCycle, чтобы посмотреть, откуда было вызвано событие, и определить, что однозначно идентифицирует изображение. Приветствия за помощь. –

+0

@jezternz: каждый обработчик событий имеет [Event object] (http://api.jquery.com/category/events/event-object/) в качестве первого параметра. Давайте объявим, что в качестве переменной 'e' вы можете использовать' var $ tr = $ (e.target) .closest ("tr"); 'или лучше' var $ tr = $ (e.target) .closest («tr.jqgrow»); 'для получения элемента' 'из строки. Итак, '$ tr.attr (« id »)' вы получите 'id' строки, где клик является огнем. С помощью rowid вы можете использовать 'getCell' для получения содержимого из любого столбца или использовать' getRowData', если вам нужны значения из всего столбца строки. Поэтому установка дополнительного 'id' на' 'на самом деле не требуется. – Oleg

+0

Yeh Я, конечно, понимаю, откуда вы пришли, и я вижу достоинства, я предполагаю, что мои первоначальные рассуждения, вероятно, заключались в том, что, добавив «id», мне не нужно запрашивать обход jquery dom и дополнительный вызов getCell для извлечения моего ' JobID. Я думаю, что $ (this) .attr ('jobid'); просто кажется намного проще. –

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