2014-06-19 18 views
5

Desidero aggiungere un collegamento ipertestuale/pulsante in ogni riga di jqgrid, che attiva una funzione javascript personalizzata. Stanco di varie prove.collegamento ipertestuale/pulsante con chiamata di funzione personalizzata in jqgrid

jQuery('#ProductListGrid').jqGrid({ 
    url: '/Product/ProductListGrid', 
    datatype: 'json', 
    multiselect: true, 
    height: 250, 
    autowidth: true, 
    mtype: 'GET', 
    loadComplete: addlinks, 
    colNames: ['ProductId', 'ProductName', 'edit'], 
    colModel: [ 
     { name: 'ProductId', index: 'ProductId',key:true, width: 70, hidden: true, editable: true, size: 5 }, 
     { name: 'ProductName', index: 'ProductName', width: 70, editable: true }, 
     { name: 'edit', index: 'edit', width: 70}, 

    ], 
    pager: jQuery('#ProductListGrid_pager'), 
}); 
function addlinks() { 
    var ids = jQuery("#ProductListGrid").getDataIDs(); 
    alert(ids); 
    for (var i = 0; i < ids.length; i++) { 
     be = "<a href='#' style='height:25px;width:120px;' type='button' title='Slet' onclick=\"ff()\" >Slet</>"; 
     jQuery("#ProductListGrid").jqGrid('setCell', ids[i],'edit','', { act: be }); 
    } 
    //for (var i = 0; i < ids.length; i++) { 
    // jQuery("#ProductListGrid").setCell(i, 'edit', '<a href="#">edit</edit>'); 
    //} 
} 
function ff() 
{ 
    alert("hi"); 
} 

Il codice negli addlinks in sta per essere eseguito ma non appare nulla nella colonna. Ho provato a utilizzare anche la formattazione personalizzata, ma non ho potuto visualizzare il testo personalizzato "Modifica" e il collegamento non fa scattare il metodo js.

+0

Hai provato il 'formatter'? se è così puoi condividerli o fornire la [demo] (http://jsfiddle.net) ... – GGG

+0

Ho aggiunto un'altra colonna alla griglia, che mostra link {name: 'ProductId', formatter: 'showlink', formatoptions: {baseLinkUrl: '/ Product/ProductEdit /', addParam: '& action = edit'}} –

+1

Ti consiglio di leggere [la risposta] (http://stackoverflow.com/a/14537512/315935) e [questo ] (http://stackoverflow.com/a/13765086/315935) che mostra come utilizzare 1) formattatore personalizzato per posizionare il testo/collegamento/pulsante nella colonna 'modifica' e 2) come usare invece la callback 'beforeSelectRow' dell'attributo 'onclick' per eseguire qualsiasi codice JavaScript al clic sul link/pulsante ... – Oleg

risposta

7

avete bisogno di chiamare un formattatore per la modifica della colonna come di seguito:

Aggiungere formatter: addLink per l'ultima colonna:

colModel: [ 
     { name: 'ProductId', index: 'ProductId',key:true, width: 70, hidden: true, editable: true, size: 5 }, 
     { name: 'ProductName', index: 'ProductName', width: 70, editable: true }, 
     { name: 'edit', index: 'edit', width: 70,formatter: addLink}, 

    ] 

aggiungere funzione javascript:

function addLink(cellvalue, options, rowObject) 
{ 
    //to get row Id 
    alert(options.rowId); 
    // to get product Id 
    alert(rowObject.ProductId); 
    return "<a href='#' style='height:25px;width:120px;' type='button' title='Slet' onclick=\"ff()\" >Slet</a>"; 
} 

Ulteriori informazioni sulla formatter here.

+0

Grazie, questo metodo viene attivato. Puoi aiutarmi come passare id alla funzione? –

+0

vuoi passare productId alla funzione ff? –

+0

Sì. l'ID del prodotto e l'ID della riga, nel caso in cui ho bisogno di altre informazioni –

Problemi correlati