DataTable - Custom Data source sorting
HTML
<link rel="stylesheet" href="//cdn.datatables.net/1.9.4/css/jquery.dataTables.css">
<script src="//cdn.datatables.net/1.9.4/js/jquery.dataTables.js"></script>
<body>
<table id="example">
<thead>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<select size="1" id="row-1-office" name="row-1-office">
<option value="Edinburgh" selected="selected"> Edinburgh </option>
<option value="London">London </option>
<option value="New York">New York </option>
<option value="San Francisco">San Francisco </option>
<option value="Tokyo"> Tokyo </option>
</select>
</td>
<td>
<select size="1" id="row-1-office" name="row-1-office">
<option value="1Edinburgh" selected="selected">1Edinburgh</option>
<option value="1London">1London</option>
<option value="1New York">1New York</option>
<option value="1San Francisco">1San Francisco</option>
<option value="1Tokyo">1Tokyo</option>
</select>
</td>
</tr>
<tr>
<td><select size="1" id="row-1-office" name="row-1-office">
<option value="Edinburgh">
Edinburgh
</option>
<option value="London" selected="selected">
London
</option>
<option value="New York">
New York
</option>
<option value="San Francisco">
San Francisco
</option>
<option...
JavaScript
$.fn.dataTableExt.afnSortData['dom-text'] = function (oSettings, iColumn) {
var aData = [];
$('td:eq(' + iColumn + ') input', oSettings.oApi._fnGetTrNodes(oSettings)).each(function () {
aData.push(this.value);
});
return aData;
};
$.fn.dataTableExt.afnSortData['dom-select'] = function (oSettings, iColumn) {
var aData = [];
$('td:eq(' + iColumn + ') select', oSettings.oApi._fnGetTrNodes(oSettings)).each(function () {
aData.push(this.value);
});
return aData;
};
/*$.fn.dataTable.ext.order['dom-text'] = function ( settings, col )
{
return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
return $('input', td).val();
} );
}
*/
var table = $('#example').dataTable({
aoColumns: [
{
sSortDataType: 'dom-select'
},
{
sSortDataType: 'dom-select'
}]
});