フォーマットされたものは、行のクリック/選択にフックされません。セルの内容 (値) が設定されている場合にのみ実行されます。代わりに、グリッド コンポーネントのイベントである onRowClicked にフォーカスを移動する必要があります。それはこのように動作します:
grid.onRowClick = onRowClickHandler;
次のサンプルのどれが目標に最も近いかはわかりませんが、onRowClickHandler はそのように設定できます。
function onRowClickHandler(evt) {
var rows = this.selection.getSelected();
// perform cell rendering here
dojo.forEach(rows, function(row) {
// this row is an item though.. you will have row._O as its index
});
}
また
function onRowClickHandler(e) {
var cellClicked = this.focus.cell
cellClicked.formatter();
}
ただし、グリッド コンポーネントのどこにも表示可能なデータへの参照があまりないことに気付く場合があります。次のクエリ セレクターを使用してセル データを検索し、各値でフォーマッターを呼び出して表示された html を更新できます。ただし、値のカスタム設定の「ティアダウン」のために以前の選択をキャプチャする必要があります。
var prevSelectedRows = [];
function onRowClickHandler(evt) {
var idx = this.selection.selectedIndex,
rawRow = dojo.query(".dojoxGridRow:nth-child("+(idx+1)+")", this.domNode)[0],
self = this;
// perform resetting of viewable values
dojo.forEach(prevSelectedRows, function(raw) {
dojo.query('.dojoxGridCell', raw).forEach(function(cellDOM, i) {
cellDOM.innerHTML = cellDOM.innerHTML.replace("SELECTED", "");
});
});
prevSelectedRows = []; // reset prev selection
// look into grid.view.content for methods on this
// perform setting of viewable values (SELECTED)
dojo.query('.dojoxGridCell', rawRow).forEach(function(cellDOM, i) {
// this function might be of interest, lets see how it looks in console
console.log(self.layout.cells[i].formatter);
cellDOM.innerHTML = cellDOM.innerHTML + "SELECTED"
});
prevSelectedRows.push(rawRow);
}