2

我在使用 YUI 的 DataTable 列选择功能时遇到问题。我试过了,

myEndColDataTable.subscribe("theadCellClickEvent", myEndColDataTable.onEventSelectColumn);

myEndColDataTable.subscribe("cellClickEvent", function (oArgs) { this.selectColumn(this.getColumn(oArgs.target));
});

问题是,我以编程方式选择了一个初始列。我可以突出显示另一列,但它不会从最初选择的列中删除选择。

4

2 回答 2

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 并如上所述遍历数组)。

于 2010-03-03T00:04:51.977 回答
0

我想我可以做到这一点,但它并不优雅。一定有更好的方法。

myEndColDataTable.subscribe("cellClickEvent", function (oArgs) {
    var colUnSelect = myEndColDataTable.getSelectedColumns();
    myEndColDataTable.unselectColumn(colUnSelect[0]);
    myEndColDataTable.selectColumn(myEndColDataTable.getColumn(oArgs.target));  
});
于 2010-03-02T20:53:57.817 回答