シナリオ
ユーザーにデータを表示するために初めてデータテーブル (@version 1.9.4) を使用しています。ajax経由でデータを取得し、データテーブルにバインドすることに成功しました。
次に、列を追加して、ユーザーがレコードを処理できるようにします。簡単にするために、目的は、「クリックされた」レコードのデータを取得する onclick ハンドラーを持つボタンを追加することです。
私の計画では、「クリックされた」レコードに対応する json アイテムを onclick ハンドラにバインドします。
これまでTH
、action 列の追加を DOM に追加すると、datatables コードからエラーが発生します。
Requested unknown parameter '5' from data source for row 0
質問
カスタム列を設定するには? コンテンツを HTML で埋める方法は?
これが私の実際の構成です。
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
});
JSON の結果の例
{
"aaData":
[
[
"IT",
"10030",
"VILLAREGGIA",
"TO",
"Torino"
],
[
"IT",
"10030",
"VISCHE",
"TO",
"Torino"
]
],
"iTotalRecords": 2,
"iTotalDisplayRecords": 2,
"iDisplayStart": 0,
"iDisplayLength": 2
}
編集
ダニエルは正しいです。解決策は、およびプロパティaoColumnDefs
を指定して、 でカスタム列を設定することです。特に、カスタム html および javascript を定義できます。mData
mRender
mRender
/* inside datatable initialization */
, "aoColumnDefs": [
{
"aTargets": [5],
"mData": null,
"mRender": function (data, type, full) {
return '<a href="#" onclick="alert(\''+ full[0] +'\');">Process</a>';
}
}
]