4

プログラムで行を選択したいdojox.grid.DataGridがあります。私はこれを行うためにsetSelected()を使用していますが、これは初めて機能します。ただし、別の行に対して2回呼び出すと、前の行が強調表示されたままになります。また、以前に選択された行を再選択しようとしても、onSelectedイベントは発生しません。しかし、実際にグリッドをクリックすると、物事がクリアされます。つまり、ハイライト解除および選択解除される前にグリッドでハイライト表示されていた行です。

コードは次のようになります。

if (grid.rowCount > 0 && idx < grid.rowCount)
{
    grid.selection.setSelected(idx, true);
    grid.render();
}

複数選択を有効にしたかのようですが、グリッドをselectionMode="single"として宣言しました。

<table dojoType="dojox.grid.DataGrid"
    id="hotTablesForAppDg"
    autoWidth="true" autoHeight="true" selectionMode="single"
    onSelected="autonomics.Clusters.loadTableDetails(this)">

前の選択をクリアするために呼び出す必要がある他の何かがありますか?

4

2 に答える 2

8

問題が解決しました。現在選択されているインデックスでsetSelected(...、false)を呼び出す必要があります。

if (grid.rowCount > 0 && idx < grid.rowCount)
{
    if (grid.selection.selectedIndex >= 0)
    {
        // If there is a currently selected row, deselect it now
        grid.selection.setSelected(grid.selection.selectedIndex, false);
    }
    grid.selection.setSelected(idx, true);
    grid.render();
}
于 2012-06-29T20:47:20.580 に答える
7

前の選択がアクティブになっているグリッドの同じ問題がありました。次のコード行grid.selection.clear(); render()を呼び出す前に、問題を解決しました。お役に立てれば。

于 2013-02-13T18:08:29.710 に答える