格式未被锁定到单击 / 选择行。 它仅在单元格内容( 值) 设定后才被执行。 相反, 您想要将焦点移到 RowClicked 上 - 网格组件上的事件。 它像这样工作 :
grid.onRowClick = onRowClickHandler;
我不知道下面的哪些样本能让你 最接近目标 但是在RowClickHandler上可以设置成这样:
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);
}