jqGrid ShowLink Formatter - 自定义ID参数

时间:2011-02-17 13:20:20

标签: jqgrid

我在这里错过了一些简单的东西吗?不进入自定义格式化,我只想在showlink格式化程序中使用我的ID值作为ID参数。这是我的子网格的一个例子:

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值作为列的文本(预先设置的“O”是有意的,并且应该通过系统传递像那样),但结果链接是:

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

依此类推,其中ID参数值是网格行的序数索引,而不是数据中的期望值。是否有一种简单的方法来使用数据中的值?

2 个答案:

答案 0 :(得分:2)

格式化程序idName的格式选项showlink仅表示您需要的网址中的参数名称。 id的值始终 rowid。在您的示例中,您使用

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]);

将行1,2的值设为1,2,mysubdata.length。方法key:trueorderid列设置addRowData 忽略。您可以在开发者工具或Firebug中验证哪个ID具有网格的<tr>个元素。

我建议您修改上面的代码,或者只使用data:mysubdata作为jqGrid的附加参数,而不是使用更慢的旧方法addRowData。因为你定义了key:true所有都应该正确。您还可以使用localReader:{id:'orderid'}作为额外的jqGrid参数。

答案 1 :(得分:1)

不确定你们是否已经解决了这个问题但是我通过设置json阅读器将其发送到我选择的ID中,如下所示:

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