根据值的变化动态更改Dojo网格中单元格的颜色

时间:2014-05-19 09:01:24

标签: dojo grid

我有一个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函数在服务器中检查代码是否有效。如果代码无效或无法使用,我将颜色设置为红色。

但问题是这个代码每次填充一个值时都会执行(即手动更改以及系统自动添加时)。 我只有在用户手动更改时才需要进行验证。

任何帮助都会有用

1 个答案:

答案 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);
});