Как выбрать строку в jQuery datatable
я использую datatables в моем приложении. Всякий раз, когда пользователь нажимает на любую строку, я хочу выделить ее и выбрать некоторые значения из выбранной строки.
"oTableTools": {
"sRowSelect": "single",
"fnRowSelected": function ( node ) {
var s=$(node).children();
alert("Selected Row : " + $s[0]);
}
пробовал sRowSelect
и fnRowSelected
но не повезло. Строка не подсвечивается и ни fnRowSelected
называется. Даже ошибки на консоли нет.
вот мой полный код
var userTable = $('#users').dataTable({
"bPaginate": true,
"bScrollCollapse": true,
"iDisplayLength": 10,
"bFilter": false,
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"oLanguage": {
"sLengthMenu": "Display _MENU_ records per page",
"sZeroRecords": "Enter a string and click on search",
"sInfo": "Showing _START_ to _END_ of _TOTAL_ results",
"sInfoEmpty": "Showing 0 to 0 of 0 results",
"sInfoFiltered": "(filtered from _MAX_ total results)"
},
"aaSorting": [[ 0, "asc" ]],
"aoColumns": [/* Name */ null,
/*Institution*/null,
/*Email*/null],
"oTableTools": {
"sRowSelect": "single",
"fnRowSelected": function ( node ) {
alert("Clicked");
}
}
});
Я что-нибудь пропустил ?
EDIT:
Теперь можно выделить выбранная строка.Добавлен класс= "display" в таблицу HTML. Все еще интересно, почему я не нашел этого в datatable docs. Теперь посмотрим, как собрать выбранные значения.
4 ответов
вот как я это делаю
просто добавьте эту функцию на свою страницу (если пользователи-Ваш идентификатор таблицы)
$("#users tbody").delegate("tr", "click", function() {
var iPos = userTable.fnGetPosition( this );
if(iPos!=null){
//couple of example on what can be done with the clicked row...
var aData = userTable.fnGetData( iPos );//get data of the clicked row
var iId = aData[1];//get column data of the row
userTable.fnDeleteRow(iPos);//delete row
}
при использовании fnRowSelected
(т. е. при создании нового tabletool) вы должны использовать
"sRowSelect": "multi",
это решит проблему. Пожалуйста, увеличьте количество комментариев, если это поможет. Мне нужно больше очков.
я использовал его в своем коде следующим образом
pqrtbl = new TableTools(NameOfTbl, { "sRowSelect": "multi",
"fnRowSelected": function ( node ) {
var s= $(node).children();
fnAddToSelLst(s[1].innerText);
},.......................
//column index depend upon your req.
выбранный класс должен быть в пределах вашей функции, которую вы использовали $s
и определения var s
который не является тем же var.
"oTableTools": {
"sSelectedClass": "yourclassname",
"sRowSelect": "single",
"fnRowSelected": function ( node ) {
var s=$(node).children();
alert("Selected Row : " + s[0]);
}
}
Если вы хотите выбрать несколько строк, хотите получить данные выбранной строки для цели ajax, проверьте это
http://jsfiddle.net/ezospama/1/
DataTable код будет следующим
$(document).ready(function() {
var table = $('#datatable').DataTable();
$('#datatable tbody').on( 'click', 'tr', function (){
$(this).toggleClass('selected');
} );
$('#btn').click( function () {
console.log(table.rows('.selected').data());
alert("Check the console for selected data");
} );
})