jqGrid ShowLink Formatter — параметр пользовательского идентификатора

Я просто пропустил что-то простое здесь? Не вдаваясь в пользовательское форматирование, я просто хотел бы использовать свои значения идентификатора для параметра идентификатора в средстве форматирования showlink. Вот пример моей подсетки:

subGridRowExpanded: function (subgrid_id, row_id) {
    var subgrid_table_id = subgrid_id + '_t';
    $('#' + subgrid_id).html('<table id="' + subgrid_table_id + '" class="scroll" />');
    $('#' + subgrid_table_id).jqGrid({
    datatype: 'local',
    colNames: ['Order Number', 'Request Type', 'Owner', 'Order Status', 'Status Date'],
    colModel: [{
        name: 'orderid',
        index: 'orderid',
        width: 150,
        key: true,
        formatter: 'showlink',
        formatoptions: { baseLinkUrl: 'AOFOrderFacilities.aspx', idName: 'orderid' }
    }, {
        name: 'type',
        index: 'type',
        width: 100
    }, {
        name: 'owner',
        index: 'owner',
        width: 200
    }, {
        name: 'status',
        index: 'status',
        width: 150
    }, {
        name: 'date',
        index: 'date',
        width: 150
    }],
    sortname: 'num',
    sortorder: 'asc',
    height: 'auto'
    });
    // TODO: Make this into an AJAX call.  This is just for demo.
    var mysubdata = [
    { orderid: 'O00001234', type: 'Data', owner: 'Melanie Martin', status: 'Saved', date: '2/4/2011 11:48:18 AM' },
    { orderid: 'O00001235', type: 'Voice', owner: 'Billy Solomon', status: 'Submitted to TC', date: '2/4/2011 12:03:47 PM' }
    ];
    for (var i = 0; i <= mysubdata.length; i++)
    jQuery('#' + subgrid_table_id).jqGrid('addRowData', i + 1, mysubdata[i]);
}

Когда ссылки в первом столбце сетки отрисовываются, они правильно отображают значение orderid в качестве текста столбца (предварительно добавленная буква «О» преднамеренна и должна проходить через систему таким образом), но результирующий ссылки:

http://localhost/somestuff/AOFOrderFacilities.aspx?orderid=1
http://localhost/somestuff/AOFOrderFacilities.aspx?orderid=2

И так далее, где значение параметра ID является порядковым индексом строки сетки, а не желаемым значением из данных. Есть ли простой способ использовать вместо этого значение из данных?


person David    schedule 17.02.2011    source источник


Ответы (2)


Параметр формата idName средства форматирования showlink говорит только о том, что имя параметра в URL-адресе, который вам нужен. Значением идентификатора всегда является идентификатор строки. В вашем примере вы используете

var mysubdata = [
    { orderid: 'O00001234', type: 'Data', owner: 'Melanie Martin',
      status: 'Saved', date: '2/4/2011 11:48:18 AM' },
    { orderid: 'O00001235', type: 'Voice', owner: 'Billy Solomon',
      status: 'Submitted to TC', date: '2/4/2011 12:03:47 PM' }
];
for (var i = 0; i <= mysubdata.length; i++)
    jQuery('#' + subgrid_table_id).jqGrid('addRowData', i + 1, mysubdata[i]);

которые дают в качестве rowid строк значения 1,2, mysubdata.length. Параметр key:true для столбца orderid будет игнорироваться методом addRowData. Вы можете проверить в инструментах разработчика или в Firebug, какой идентификатор имеет <tr> элементов вашей сетки.

Я рекомендую вам изменить приведенный выше код или просто использовать data:mysubdata в качестве дополнительного параметра jqGrid вместо использования более медленного старого метода addRowData. Поскольку вы определили key:true, все должно работать правильно. Вы также можете использовать localReader:{id:'orderid'} в качестве дополнительного параметра jqGrid.

person Oleg    schedule 17.02.2011
comment
Ах, я даже не заметил вариант data, я просто просматривал несколько примеров на веб-сайте jqGrid. Имеет смысл использовать индекс из addRowData теперь, когда вы упомянули об этом. Просто передача массива данных в качестве опции имеет гораздо больше смысла и отлично работает. Спасибо! - person David; 17.02.2011
comment
@Oleg: Пожалуйста, помогите мне разместить настраиваемый форматировщик showlink в моем примере - person AabinGunz; 19.08.2011

Не уверен, что вы, ребята, уже решили эту проблему, НО я получил его для отправки по выбранному мной идентификатору, установив считыватель json следующим образом:

jsonReader: { repeatitems: false, id: "[property whose value you want to pass]" },

Богатый

person Richard Parkins    schedule 02.02.2012