2011-11-23 52 views
9

我在我的应用程序中使用了datatables。每当用户点击任何一行时,我想突出显示它并从选定行中选择一些值。如何在Jquery数据表中选择一行

"oTableTools": { 
       "sRowSelect": "single", 

       "fnRowSelected": function (node) { 
        var s=$(node).children(); 
         alert("Selected Row : " + $s[0]); 
        } 

我试图sRowSelectfnRowSelected但没有运气。该行没有被突出显示,也没有调用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"); 
        } 
      }  
     });  

我失去了什么?

编辑:
现在能够突出所选row.Added类= “显示” 到HTML表格。仍然想知道为什么我没有在数据表单文档中找到它。现在看看如何收集选定的值。

回答

5

这里是我如何做到这一点

当您使用fnRowSelected只需添加这个功能到你的页面(如果用户是你的表ID)

$("#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 

} 
+0

感谢您提供简单的解决方案。我使用“$(。row_selected)”查找选定的行,然后再次使用jquery选择器过滤所有数据。 – xyz

0

选定的类应该在您的函数中使用$s,并且您定义了var s,它与var不同。

"oTableTools": { 
      "sSelectedClass": "yourclassname", 
      "sRowSelect": "single", 
      "fnRowSelected": function (node) { 
       var s=$(node).children(); 
        alert("Selected Row : " + s[0]); 
       } 
     } 
+0

我们是否需要将自己的类应用到' sSelectedClass'? – xyz

+0

我不知道,但由于函数内部存在错误,突出显示可能已被中断。 – Niels

+0

我改变了,谢谢。检查我的编辑。它仍然没有工作。 – xyz

3

(即创建新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. 
0

如果你想选择多行,想要得到阿贾克斯目的选择行的数据检查本

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"); 
    }); 
})