我有一个dojo网格,主要有4列。网格最初是空的。
下面的是我的网格布局
var gridLayout = [{
defaultCell: { width: '8%', editable: true, type: dojox.grid.cells._Widget, styles: 'text-align: right;' },
rows: [
{ name: 'Item Id', field: 'ItemId',hidden:true},
{ name: 'Type', field: 'LineType', width: '8%', type: dojox.grid.cells.Select,styles: 'text-align: center;'},
{ name: 'Amount', field: 'Amount', width: '8%', styles: 'text-align: center;', type: dojox.grid.cells.TextBox},
{ name: 'Code', field: 'Code', width: '8%', styles: 'text-align: center;',formatter:changeCodeColor, type: dojox.grid.cells.TextBox}
]
}];
单击“我在服务器中获取项目”表单中的“添加行项目”按钮,其中“金额”单元格中的值为“空”,但是类型和代码是自动填充的。 如果用户更改代码单元格中的值,我需要更改代码的颜色。 以下是我写的函数
function changeCodeColor(code, rowIndex, cell)
{
var codeDetails = validateCode(code)
if(!codeDetails)
{
cell.customStyles.push('color:red');;
}
return code;
}
validateCode函数在服务器中检查代码是否有效。如果代码无效或无法使用,我将颜色设置为红色。
但问题是这个代码每次填充一个值时都会执行(即手动更改以及系统自动添加时)。 我只有在用户手动更改时才需要进行验证。
任何帮助都会有用
答案 0 :(得分:0)
Formatter用于定义如何显示商店中的数据。对于事件处理程序,您应该使用DataGrid中的onCellClick事件,例如
var grid = new Grid({
store: store,
selectionMode: 'single',
structure: [[
{ field: 'name', name: 'Name' }
]]}, dojo.byId("grid"));
grid.startup();
dojo.connect(grid, "onCellClick", function(e) {
var dataItem = grid.selection.getSelected();
console.dir(dataItem);
});