jquery datatable disable sort in specific row

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP



jquery datatable disable sort in specific row



How to disable sorting in specific row/column in jquery datatable using a class?



here's my sample table;


<table>
<thead>
<tr>
<th class="sorting_disabled">Title1</th>
<th class="">Title2</th>
<th class="sorting_disabled">Title3</th>
</tr>
</thead>
<tbody>
<tr><td>Tag 1</td><td>Date 1</td><td>Date 2</td></tr>
<tr><td>Tag 2</td><td>Date 2</td><td>Date 2</td></tr>
<tr><td>Tag 3</td><td>Date 3</td><td>Date 3</td></tr>
<tr><td>Tag 4</td><td>Date 4</td><td>Date 4</td></tr>
<tr><td>Tag 5</td><td>Date 5</td><td>Date 5</td></tr>
....
</tbody>
</table>



script;


$('.sortable thead tr th.sorting_disabled').livequery(function()
$(this).removeClass('sorting');
$(this).unbind('click');
);



above code works but if I click to the next column who has a sorting its shows again an arrow. though its not clickable ;(



How can I disable the sorting by using a class and not using/redraw a table.





what is meant by sorting here??
– Naveen Kumar Yadav
Jun 13 '12 at 8:59





above code is just a sample table :) Ive edit it already..
– mrrsb
Jun 13 '12 at 9:03






You can set bSortable to false for those columns, in aoColumns def. Check this example, sorting is disabled on first and second column live.datatables.net/awizop/edit#preview
– Prasenjit Kumar Nag
Jun 13 '12 at 9:18


bSortable


aoColumns





I know Sir, but the given code always set in the first column though we can set it by its script. below answer may used as a dynamic code for a class who has a 'sorting_disabled'.
– mrrsb
Jun 13 '12 at 9:24




9 Answers
9



You can disable the sorting using a class in definition.
Just add this code to the datatable initialization:


// Disable sorting on the sorting_disabled class
"aoColumnDefs" : [
"bSortable" : false,
"aTargets" : [ "sorting_disabled" ]
]


$('#example').dataTable(
"aoColumnDefs": [
'bSortable': false, 'aTargets': [ 1 ]
]);



That should do it..;)



try the following answer .it works for me.


<table class="tablesorter" id="tmp">
<thead>
<tr>
<th>Area</th>
<th>Total Visitors</th>
</tr>
</thead>
<tbody>
<tr>
<td>Javascript</td>
<td>15</td>
</tr>
<tr>
<td>PHP</td>
<td>3</td>
</tr>
<tr>
<td>HTML5</td>
<td>32</td>
</tr>
<tr>
<td>CSS</td>
<td>14</td>
</tr>
<tr>
<td>XML</td>
<td>54</td>
</tr>
</tbody>
<tfoot>
<tr class="no-sort">
<td><strong>Total</strong></td>
<td><strong>118</strong></td>
</tr>
</tfoot>





source : http://blog.adrianlawley.com/tablesorter-jquery-how-to-exclude-rows


<th class="sorting_disabled">&nbsp;</th>

$(document).ready(function ()
$('#yourDataTableDivID').dataTable(
"aoColumnDefs": [

"bSortable": false,
"aTargets": ["sorting_disabled"]

]
);
);



I hope below code works in your case.


$("#dataTable").dataTable(
"aoColumns": ["bSortable": false, null,"bSortable": false]
);



You need to disable sorting via "bSortable" for that specific column.


$(document).ready(function()
$('#example').dataTable(
"aoColumns": [
"bSortable": false ,
null,
"bSortable": false
]
);
);



I came with almost the same solution like in the question, but I used the "fnHeaderCallback". As far as I understood, it gets called after each header redisplay, so no more worries about 'sorting' class that appears again after clicking on column next to target column.


$('.datatable').dataTable(
"fnHeaderCallback": function()
return $('th.sorting.sorting_disabled').removeClass("sorting").unbind("click");

);



Additional documentation about callbacks: http://datatables.net/usage/callbacks



The only solution:
First add class="sorting_disabled" to any<th> that you want to disable sorting, then add this code to the datatable initialization:


class="sorting_disabled"


<th>


// Disable sorting on the sorting_disabled class
"aoColumnDefs" : [
"bSortable" : false,
"aTargets" : [ "sorting_disabled" ]
],
"order": [
[1, 'asc']
],



this code worked for me in react.



in row created i added fixed-row class to the row i wanted to stay fixed and not sortable and i drawcallback i hid the row then i appended it to the table itself.



Hope this works for you:


$(this.refs.main).DataTable(
dom: '<"data-table-wrapper"t>',
data: data,
language:
"emptyTable": "Loading ...",

,
columns,
ordering: true,
order: [0,'asc'],
destory:true,
bFilter: true,
fixedHeader:
header: true
,
iDisplayLength: 100,
scrollY: '79vh',
ScrollX: '100%',
scrollCollapse: true,
"drawCallback": function( settings )
var dataTableId = $("#To_Scroll_List").find(".dataTables_scrollBody table").attr("id");
$("..fixed-row").css('display','none');
$("#"+dataTableId+"_wrapper table").find('tbody tr:last').after($('.fixed-row'));
$(".fixed-row").show();
,
createdRow: function (row, data, index)
if(data.UnitsPerLine == 999)
$(row).addClass('fixed-row');

,
initComplete: function (settings, json)

$("#To_Scroll_List").find(".dataTables_scrollBodytable").attr("id");
$("#"+dataTableId+" thead tr").remove();



);

DatatableSearch(dataTableId+"_wrapper table", "AverageUnitsPerLineReport");

});
}






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Popular posts from this blog

Firebase Auth - with Email and Password - Check user already registered

Dynamically update html content plain JS

How to determine optimal route across keyboard