2010-06-11 38 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