我在使用YUI的DataTable列选择功能时遇到问题。我试过了,
myEndColDataTable.subscribe("theadCellClickEvent", myEndColDataTable.onEventSelectColumn);
和
myEndColDataTable.subscribe("cellClickEvent", function (oArgs) {
this.selectColumn(this.getColumn(oArgs.target));
});
问题是,我有一个以编程方式选择的初始列。我可以突出显示另一列,但它不会从最初选择的列中删除选择。
答案 0 :(得分:1)
你是对的 - 没有快速清洁的解决方案。
目前YUI DataTable(截至2.8)缺少unselectAllColmns
方法来匹配unselectAllRows
(由onEventSelectRow
调用)。
值得注意的是,onEventSelectColumn
会选择列标题,因此unselectAllCells
将无效。
您可以像这样实现自己的unselectAllColumns()
功能:
function unselectAllColumns (dataTable) {
var i, oColumn, oColumnSet = dataTable.getColumnSet();
for (i=0; i<oColumnSet.keys.length; i++) {
oColumn = oColumnSet.keys[i];
if (oColumn.selected) {
dataTable.unselectColumn(oColumn);
}
}
}
这比使用getSelectedColumns()
稍微有效一点,因为您不需要构建仅包含选定列的中间数组(查看源getSelectedColumns调用getColumnSet并像上面那样遍历数组)。
答案 1 :(得分:0)
我想我可以做到这一点,但它并不优雅。必须有更好的方法。
myEndColDataTable.subscribe("cellClickEvent", function (oArgs) {
var colUnSelect = myEndColDataTable.getSelectedColumns();
myEndColDataTable.unselectColumn(colUnSelect[0]);
myEndColDataTable.selectColumn(myEndColDataTable.getColumn(oArgs.target));
});