jquery datatables: adicionando coluna extra
Cenári
Estou usando datatables (@version 1.9.4) pela primeira vez para exibir dados para o usuário. Consigo recuperar os dados via ajax e vinculá-los à tabela de dado
gora, quero adicionar colunas extras para permitir que o usuário processe os registros. Por uma questão de simplicidade, o objetivo é adicionar um botão com um manipulador onclick que recupere os dados do registro 'clicado'.
No meu plano, vincularia o item json correspondente ao registro 'clicado' ao manipulador onclic
Até agora, se eu adicionar um @ adicionTH
para a coluna de ação no DOM, ocorre um erro no código das tabelas de dados:
Requested unknown parameter '5' from data source for row 0
Questã
Como definir colunas personalizadas? Como preencher o conteúdo com HTML?
qui está a minha configuração rea
HTML
<table id="tableCities">
<thead>
<tr>
<th>country</th>
<th>zip</th>
<th>city</th>
<th>district code</th>
<th>district description</th>
<th>actions</th>
</tr>
</thead>
<tbody></tbody>
</table>
Javascript
$('#tableCities').dataTable({
"bPaginate": true,
"bLengthChange": false,
"bFilter": true,
"bSort": true,
"bInfo": false,
"bAutoWidth": true
, "bJQueryUI": true
, "bProcessing": true
, "bServerSide": true
, "sAjaxSource": "../biz/GetCitiesByZip.asp?t=" + t
});
Sample Json result
{
"aaData":
[
[
"IT",
"10030",
"VILLAREGGIA",
"TO",
"Torino"
],
[
"IT",
"10030",
"VISCHE",
"TO",
"Torino"
]
],
"iTotalRecords": 2,
"iTotalDisplayRecords": 2,
"iDisplayStart": 0,
"iDisplayLength": 2
}
Edita
Daniel está certo. A solução é configurar a coluna personalizada noaoColumnDefs
, especificando omData
e amRender
propriedades. Em particularmRender
permite definir html e javascript personalizado
/* inside datatable initialization */
, "aoColumnDefs": [
{
"aTargets": [5],
"mData": null,
"mRender": function (data, type, full) {
return '<a href="#" onclick="alert(\''+ full[0] +'\');">Process</a>';
}
}
]