Наличие jqgrid возвращает ссылку на основе значения данных - PullRequest
0 голосов
/ 09 марта 2012

У меня определена следующая сетка:

$("#list").jqGrid({
    url:'listOpenQueryInXML.php',
    datatype: 'xml',
    colNames:['Id','name1', 'name2', 'status', 'type'],
    colModel:[
        {name:'id', index:'id', editable: false, formatter:'showlink', formatoptions:{baseLinkUrl:'continue.php'}},
        {name:'name1', index:'name1', editable: false},
        {name:'name2', index:'name2', editable: false},
        {name:'status', index:'status', editable: false},
        {name:'type', index:'type', editable: false}
    ],
    autowidth: true,
    sortname: 'id',
    viewrecords: true,
    pager: null,
    sortorder: 'id',
    loadonce: false,
    caption: 'Open Query',
    height: '100%',
    xmlReader: { root : "rows", row: "row", repeatitems: false, id: "id" },

Теперь я хотел бы переопределить continue.php, чтобы он представлял собой другую ссылку, основанную на содержании 'id', 'status' или любого поля.

Так что если

status = NEW link = "new.php? Id =" {id} " status = STUCK link = "helper.php? id = {id}"

1010 * И т.д. *

Я использую jqGrid 4.3.1 и jQuery 1.8.16.

1 Ответ

3 голосов
/ 10 марта 2012

Вы должны использовать пользовательский форматер вместо showlink форматер.В этом случае вам нужно создать элемент <a> самостоятельно на основе параметров cellvalue, options и rowObject функции обратного вызова.Поскольку вы используете datatype: 'xml', параметр rowObject будет IXMLDOMElement, поэтому, чтобы получить status, вы должны использовать find или children jqGrid метод.

Я не тестировал приведенный ниже код, но, полагаю, вы можете сделать что-то вроде следующего:

$("#list").jqGrid({
    url: 'listOpenQueryInXML.php',
    colNames: ['Id', 'name1', 'name2', 'status', 'type'],
    colModel :[
        {name:'id', formatter: function (cellvalue, options, rowObject) {
                return '<a href="' +
                           ($(rowObject).children('status').text() === 'NEW' ?
                               'new.php' : 'helper.php') +
                           '?id=' + cellvalue + '">' + cellvalue + '</a>';
            },
        {name:'name1'},
        {name:'name2'},
        {name:'status'},
        {name:'type'}
    ],
    autowidth: true,
    gridview: true, 
    sortname: 'id',
    viewrecords: true,
    sortorder: 'id',
    caption: 'Open Query',
    height: '100%',
    xmlReader: { repeatitems: false, id: "id" }
});

Это всего лишь пример форматера.Вы можете поместить, например, другой текст в ссылку, которая будет отображаться пользователем.

Я удалил из определения jqGrid, в котором вы используете много опций по умолчанию, и добавил опции gridview: true, которые улучшают производительность сетки.

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