SMART datagrid v.1 > Examples

Back  Forward

Alternate Row Colors  Example

我们可以通过交替显示网格行的背景颜色而提高可读性。 SMART datagrid格为体现符合应用状况的要求事项而提供几种方法。 首先,我们了解一下在数据单元格级别进行处理的方法,然后,我们将会说明在数据行级别进行渲染的方法。 

1. 单元格动态样式

通过使用GridBody.rowDynamicStyles,我们可以根据行号而区分显示数据单元格的背景颜色。 rowDynamicStyles是一种统一适用在一个行的所有数据单元格的动态样式,所以将会在网格渲染时点,分别为各个行决定一次样式属性值。 

Code -1
    grid.body().setRowDynamicStyles([{
        expression: 'row % 2',
        styles: { background: '#100000ff' }
    }]);
Grid - 1
rows

通过将ignoreRowDynamicStyles属性指定为true"数量"列显示指定在列样式中的颜色。 

 


另外,我们可以使用GridBody.cellDynamicStyles并根据各个行号,区分显示数据单元格的背景颜色。 如同rowDynamicStyles,cellDynamicStyles虽然是一种统一适用在一个行的所有数据单元格的动态样式, 但它会在网格渲染时点,通过计算各个单元格的表达式而决定样式值。 如果是可以通过rowDynamicStyles而体现的情况,就不需要使用cellDynamicStyles。 

Code -2
    grid.body().setCellDynamicStyles([{
        expression: 'row % 2',
        styles: { background: '#100000ff' }
    }]);
Grid - 2
rows

通过将ignoreDefaultDynamicStyles属性指定为true"数量"列显示指定在列样式中的颜色。 

 

即使是使用列的DataColumn.dynamicStyles,我们也可以体现相同的内容。 但是,这时我们需要指定所有列的动态样式。 

2. 行样式

在绘制数据单元格之前,将会预先绘制包含单元格的网格行,并且可以通过设置网格行的样式而区分背景颜色。 因为这种方式在性能上,比使用单元格动态样式更具优势,所以我们需要尽量使用这个方式进行体现。 

首先,使用默认行样式调色板而进行体现。 

Code -3
    // 注册调色板。
    grid.loadPalettes([{
        name: 'p01',
        fills: [null, '#080000ff']
    }]);
    
    // 通过背景颜色而设置调色板项目。
    grid.body().setRowStyles({
        background: 'p(p01:row)'
    });
Grid - 3
rows

需要注意的是,绘制"数量"列的单元格的结果是与上述单元格动态样式例题是不同的。 因为绘制行的上方显示半透明的单元格,所以将会显示为叠加的颜色。 

除了默认行样式以外,也可以分别为各个行的范围指定样式。 

Code -4
    grid.body().setRowRangeStyles({
        'row % 2': { background: '#10000080' }
    });
Grid - 4
rows

如果使用上述两种方式,就可以通过多种方式,交替显示背景颜色并且无需代码。 例如,可以通过以下三行一套的方式而交替显示。 

Code -5
    grid.body().setRowRangeStyles({
        '(row div 3) % 2': { background: '#10000080' }
    });
Grid - 5
rows

请参考rowRangeStyles帮助主题。 


查看源代码 JSP 

See Also
GridBody.rowStyles
GridBody.rowDynamicStyles
GridColumn.styles
GridRowStyles
GridStyles
动态样式概述
表达式概述
Examples
行动态样式
行样式