jqGrid ShowLink Formatter - Parametru ID personalizat

Oare îmi scapa ceva simplu aici? Fără a intra în formatare personalizată, aș dori doar să folosesc valorile mele ID pentru parametrul ID din formatatorul showlink. Iată un exemplu de sub-grilă:

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

Când legăturile din prima coloană a grilei sunt redate, ele afișează corect valoarea orderid ca text al coloanei („O” pre-închis este intenționat și ar trebui să fie trecut prin sistem așa), dar rezultatul link-urile sunt:

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

Și așa mai departe, unde valoarea parametrului ID este indexul ordinal al rândului grilei, mai degrabă decât valoarea dorită din date. Există o modalitate ușoară de a utiliza valoarea din date?


person David    schedule 17.02.2011    source sursă


Răspunsuri (2)


Opțiunea de format idName a formatatorului showlink spune doar că numele parametrului din adresa URL de care aveți nevoie. Valoarea id-ului este întotdeauna rowid-ul. În exemplul tău folosești

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

care dau ca rowid al rândurilor valorile 1,2, mysubdata.length. Setarea key:true pentru coloana orderid va fi ignorata prin metoda addRowData. Puteți verifica în Instrumentele pentru dezvoltatori sau în Firebug care ID are <tr> elemente ale grilei dvs.

Vă recomand să modificați codul de mai sus sau să utilizați pur și simplu data:mysubdata ca parametru suplimentar al jqGrid în loc de vechea metodă mai lentă addRowData. Pentru că ați definit key:true, totul ar trebui să funcționeze corect. De asemenea, puteți utiliza localReader:{id:'orderid'} ca parametru suplimentar jqGrid.

person Oleg    schedule 17.02.2011
comment
Ah, nici nu observasem opțiunea data, mă uitam doar după câteva exemple pe site-ul jqGrid. Are sens că folosește indexul de la addRowData acum că îl menționați. Doar trecerea matricei de date ca opțiune are mult mai mult sens și funcționează perfect. Mulțumiri! - person David; 17.02.2011
comment
@Oleg: Vă rugăm să mă ajutați să plasez un showlink de formatare personalizat în exemplul meu - person AabinGunz; 19.08.2011

Nu sunt sigur dacă ați rezolvat încă acest lucru, DAR l-am trimis prin ID-ul ales de mine, setând cititorul json după cum urmează:

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

Bogat

person Richard Parkins    schedule 02.02.2012