2011-02-17 44 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]" },

豐富