2

YUIのDataTable列選択機能の使用に問題があります。私はもう試した、

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

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

問題は、プログラムで最初の列を選択していることです。他の列を強調表示することはできますが、最初に選択された列から選択が削除されません。

4

2 に答える 2

1

あなたは正しいです - 迅速なクリーンソリューションはありません。

現在 (2.8 の時点で) YUI DataTable には、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 に答える