2011-12-13 3 views
7

Я пытаюсь создать свой род многоразового форматировщика для колонки jqGrid, Я хотел бы создать пользовательский форматировщик, где я в состоянии передать дополнительные данные, что-то похожее на этот код:Как передать дополнительные переменные в форматировщик jqGrid?

function imageLinkFormatter(cellval,options,rowObject,icon,link_class,link_action){ 
    var img='<span class="ui-icon '+icon+' icon"><span/>';  
    var link='<a href="#'+link_action+'/id/'+rowObject.id+'" class="'+link_class+'" rel="'+rowObject.id+'">'+img+'</a>'; 
    return link; 
    } 

ответ

10

Это, вероятно, недоразумение. Интерфейс custom formatter определяется jqGrid. Чтобы иметь дополнительные параметры в пользовательском форматировании, вам нужно изменить исходный код jqGrid.

Хорошей новостью является то, что вам не нужно распространять стандартный формат . Вместо этого вы хотите, вероятно, просто поделиться кодом. Таким образом, вы можете определить общий код, как функции, как

function imageLinkFormatter(cellval, options, rowObject, icon, link_class, link_action) { 
    var img = '<span class="ui-icon ' + icon + ' icon"><span/>';  
    var link = '<a href="#' + link_action + '/id/' + rowObject.id + '" class="' + 
     link_class + '" rel="' + rowObject.id + '">' + img + '</a>'; 
    return link; 
} 

и вызвать функцию из пользовательского форматировщика различных столбцов сетки с дополнительными параметрами.

colModal: [ 
    {name: 'col1', formatter: function (cellvalue, options, rowObject) { 
      return imageLinkFormatter(cellvalue, options, rowObject, 
       'ui-icon-pencil', 'edit-link-class', 'Edit'); 
     }}, 
    {name: 'col2', formatter: function (cellvalue, options, rowObject) { 
      return imageLinkFormatter(cellvalue, options, rowObject, 
       'ui-icon-plus', 'add-link-class', 'Add'); 
     }}, 
    {name: 'col2', formatter: function (cellvalue, options, rowObject) { 
      return imageLinkFormatter(cellvalue, options, rowObject, 
       'ui-icon-trash', 'del-link-class', 'Delete'); 
     }}, 
    ... 
] 

Это то, что вы хотите?

+0

Спасибо за ответ и объяснение, я думал, что я должен расширить собственный форматер, но это идеальное решение. С уважением – stawek

+0

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

6

определяет FormatOptions в определении столбца

colModal: [ 
    {name: 'col1', 
    formatter: imageLinkFormatter, 
    formatoptions: { 
     icon: 'ui-icon-pencil', 
     link_class: 'edit-link-class', 
     action: 'Edit' 
    }}, 
    {name: 'col2', formatter: imageLinkFormatter, formatoptions: {icon: 'ui-icon-plus', link_class: 'add-link-class', action: 'Add'}}, 
    {name: 'col3', formatter: imageLinkFormatter, formatoptions: {icon: 'ui-icon-trash', link_class: 'del-link-class', action: 'Add'}} 
    ... 
] 

, а затем вы можете получить доступ к нему внутри пользовательскому форматировщику

function imageLinkFormatter(cellval, options, rowObject) { 
    var img = '<span class="ui-icon ' + options.colModel.formatoptions.icon + ' icon"><span/>'; 
    var link = '<a href="#' + options.colModel.formatoptions.action + '/id/' + rowObject.id + '" class="' + 
     options.colModel.formatoptions.link_class + '" rel="' + rowObject.id + '">' + img + '</a>'; 
    return link; 
} 
Смежные вопросы