2015-05-27 15 views
10

Sto cercando di creare una colonna come collegamento ipertestuale con datatable ma senza esito positivo.crea i dati della colonna come collegamento ipertestuale (dataTable JQUERY)

funzione successCallback (responseObj) {

$(document).ready(function() { 
     $('#example').dataTable({ 
     "data":responseObj , 
     "bDestroy": true, 
     "deferRender": true , 
     "columns": [ 
        { "data": "infomation" }, 
        { "data": "weblink" }, 
       ] 
    }); 

    }); 

}

ho bisogno del link web per visualizzare il link ed essere un collegamento ipertestuale in quella colonna modo che gli utenti possono fare clic ed essere reindirizzato a un'altra pagina. Ho esaminato render ma con meno informazioni lì sui collegamenti, non riesco a farlo.

Ho anche esaminato questo example ma non è stato molto utile.

risposta

19

Uso columns.render metodo API per produrre dinamicamente i contenuti per una cella.

$('#example').dataTable({ 
    "data": responseObj, 
    "columns": [ 
     { "data": "information" }, 
     { 
     "data": "weblink", 
     "render": function(data, type, row, meta){ 
      if(type === 'display'){ 
       data = '<a href="' + data + '">' + data + '</a>'; 
      } 

      return data; 
     } 
     } 
    ] 
}); 

Vedere this example per codice e dimostrazione.

+1

Grazie per la guida molto elaborata. – Undisputed007

+0

Cosa se voglio fare anche la prima colonna (A1-A4) cliccabile che userebbe lo stesso link? Ho un problema quando voglio più colonne cliccabili, ma uso la stessa fonte per 'href'. Spero che abbia senso – Trm

+0

@Trm, tu può definire la stessa funzione 'columns.render' per il resto delle colonne, invece di' data' usa 'row ['weblink']'. Oppure puoi usare 'columnDefs.render' e definire una volta la funzione' render' e destinazione tutte le colonne richieste utilizzando l'opzione 'columnDefs.targets'. –

4
$('#example').dataTable({ 
    "columnDefs": [ { 
    "targets": 0, 
    "data": "download_link", 
    "render": function (data, type, full, meta) { 
     return '<a href="'+data+'">Download</a>'; 
    } 
    } ] 
}); 

dal documentation. E 'abbastanza chiaro e diretto per me, cosa è esattamente che non capisci? Che errori vedi?

Per un esempio più completo, vedi here

+0

Grazie jmo: DI andrà con l'altra risposta dal momento che ha un Fiddle e ho provato prima che funzionava – Undisputed007

+1

Sai se c'è una soluzione se ho "target": [0,1] ', loro entrambi userebbero i dati dalla prima colonna (obiettivo 0)? – Trm

+0

Ti dirò dopo Natale – ozz

1

Se si desidera aggiungere un collegamento in base ad altri dati colonna, è possibile utilizzare l'approccio seguente.

$('#example').dataTable({ 
    "data": responseObj, 
    "columns": [ 
     { "data": "information" }, 
     { 
     "data": "weblink", 
     "render": function(data, type, row, meta){ 
      if(type === 'display'){ 
       data = '<a href="' + row.myid + '">' + data + '</a>'; 
      } 
      return data; 
     } 
     } 
    ] 
}); 

ho appena cambiato la funzione di rendering. data si riferisce solo ai dati della colonna corrente, mentre l'oggetto row si riferisce all'intera riga di dati. Quindi possiamo usarlo per ottenere altri dati per quella riga.