2010-06-11 72 views
3

我使用的是YUI DataTable中有这样一个复选框列:如何在YUI DataTable中查找选中的行?

var myColumnDefs = [ 
    {key:"check", label:'', formatter:"checkbox"},        
    {other columns...} 
]; 

我如何可以遍历已经检查的所有行?

UPDATE:

这是我目前的解决方法:

function getCheckedIds() { 
    var records = yuiDataTable.getRecordSet().getRecords(); 
    var ids = ''; 

    for (i=0; i < records.length; i++) { 
     var checked = false; 
     if (records[i] != undefined) 
     { 
      checked = $('#' + records[i].getId() + ' td div.yui-dt-liner input.yui-dt-checkbox').attr('checked'); 
      if (checked) { 
       if (ids != '') { 
        ids += ','; 
       } 
       ids += records[i].getData("item.id"); 
      } 
     } 
    } 
    return ids;  
} 
+1

贾斯汀 - 有一个YUI DataTable支持的专用论坛 - http://yuilibrary.com/forum/viewforum.php?f=90 - 如果你在这里没有得到答案,你可能想要在那里尝试。 -Eric – 2010-06-14 17:39:12

回答

2

一个更好的办法是订阅DataTable的checkboxClickEvent,那么当选择复选框(或未选择)以编程方式将该行标记为使用Datatable的selectRow/unselectRow方法进行选择。如果你这样做,它在UI中看起来更好(行高亮),并且使用Datatable的getSelectedRows方法很容易得到选定的行。

+1

好主意,这种方法有问题,用户按回来。按下后,一些复选框可能会保持检查状态,但由于每个复选框的onclick事件并未触发此页面加载,因此它们未标记为正在检查。 – 2010-07-12 08:36:32