2011-02-17 47 views
2

我只是想在这里简单的东西?不用进入自定义格式,我只想使用我的ID值作为showlink格式化程序中的ID参数。这是我的分格的示例:jqGrid ShowLink格式器 - 自定义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: 'O000', type: 'Data', owner: 'Melanie Martin', status: 'Saved', date: '2/4/2011 11:48:18 AM' }, 
    { orderid: 'O000', 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

格式化程序showlink的格式选项idName只会说明您需要的url中的参数名称。 id的值是总是 rowid。在你的例子中,你使用

var mysubdata = [ 
    { orderid: 'O000', type: 'Data', owner: 'Melanie Martin', 
     status: 'Saved', date: '2/4/2011 11:48:18 AM' }, 
    { orderid: 'O000', 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。列orderid的设置key:true将通过方法addRowData忽略。您可以在Developer Tools或Firebug中验证哪个ID的网格元素为<tr>

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

+0

啊,我hadn甚至没有注意到`data`选项,我只是想通过jqGrid网站上的一些例子。有意义的是,现在你提到它,它使用`addRowData`中的索引。只要将数据数组作为选项传递就更有意义并且完美地工作。谢谢! – David 2011-02-17 14:32:11

1

不知道你们是否已经解决了这个,但是我得到了它通过设置JSON读者在我选择的ID发送如下:

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

丰富