Выбор столбца YUI - PullRequest
       16

Выбор столбца YUI

2 голосов
/ 02 марта 2010

У меня проблемы с использованием функции выбора столбца DataTable в YUI. Я пробовал,

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

и

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

Проблема в том, что у меня начальный столбец выбран программно. Я могу выделить другой столбец, но он не удаляет выделение из первоначально выбранного столбца.

Ответы [ 2 ]

1 голос
/ 03 марта 2010

Вы правы - быстрого решения не существует.

В 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 и просматривает массив, как описано выше).

0 голосов
/ 02 марта 2010

Думаю, я могу это сделать, но это не элегантно. Должен быть лучший способ.

myEndColDataTable.subscribe("cellClickEvent", function (oArgs) {
    var colUnSelect = myEndColDataTable.getSelectedColumns();
    myEndColDataTable.unselectColumn(colUnSelect[0]);
    myEndColDataTable.selectColumn(myEndColDataTable.getColumn(oArgs.target));  
});
...