2014-12-15 2 views
1

У меня есть файл js и имя функции, называемое viewLineBtn.jqgrid formatter не работает и не отвечает

в моем коде сервера, я создал список объектов

List<GridModelClass> addmodelResult = new List<GridModelClass>(); 

    addmodelResult.Add(new GridModelClass { name = "AddTestApprove", label = "Approve", width = "40", hidden = false, formatter = "viewLineBtn" }); 

однако viewLineBtn не может распознать. Как его решить?

+0

форматтеры jQGrid являются Javascript функции, которые декларируют и называются они, когда данные в сетке заполняется на фронт- конец. Параметры для функций форматирования jQGrid также очень специфичны. Ссылка [Custom Formatter] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter). Насколько я знаю, пользовательские форматы не имеют никакого отношения к серверному коду. –

+0

Я добавил formatter = "viewLineBtn" в свой список, и в моем javascript есть функция viewLineBtn. – user3431414

+0

Опубликуйте свой Javascript для нас, чтобы его рассмотреть. –

ответ

2

Кажется, что вы возвращаете colModel, поскольку данные JSON возвращаются с сервера. В результате у вас есть formatter свойство, которое имеет тип string (например, formatter: "viewLineBtn") вместо функции (например, formatter: viewLineBtn, где viewLineBtn определяется как функция).

Для устранения проблемы вы можете изменить способ определения функции форматирования. Вместо использования

function viewLineBtn (cellValue, options, rowObject) { 
    // do something here 
    return htmlFragmentOfCell; 
} 

вы должны использовать

$.extend($.fn.fmatter, { 
    viewLineBtn: function (cellValue, options, rowObject) { 
     // do something here 
     return htmlFragmentUsedInCell; 
    } 
}); 

В случае, если вы можете использовать formatter: "viewLineBtn" в colModel.

Я бы порекомендовал вас всегда определять custom unformatter (unformat), если вы определяете custom formatter. Для этого в случае строки использования значения formatter вы должны определить unformatter следующим образом:

$.extend($.fn.fmatter, { 
    viewLineBtn: function (cellValue, options, rowObject) { 
     // do something here 
     return htmlFragmentUsedInCell; 
    } 
}); 
$.extend($.fn.fmatter.viewLineBtn, { 
    unformat: function (cellValue, options, elem) { 
     // do something here 
     return htmlFragmentFromDomElem; 
    } 
});