AdvancedDataGrid综合应用——自定义itemRenderer

这次我们主要讲述怎样使用项目渲染器(itemRenderer)来进一步美化AdvancedDataGrid控件。

AdvancedDataGridItemRenderer类是AdvancedDataGrid控件的默认项目渲染器。默认情况下,项目渲染器绘制与网格中各项相关联的文本。因为AdvancedDataGrid基于ListBase类,因此我们像创建其它ListBase类控件的项目渲染器一样自定义项目渲染器。

和DataGrid控件类似,我们可以对AdvancedDataGrid控件的列使用项目渲染器,但最好的方式是使用AdvancedDataGridRendererProvider实例,因为它定义了由AdvancedDataGrid 控件使用的单个项目渲染器的特征。使用AdvancedDataGridRendererProvider类的属性可配置AdvancedDataGrid 控件中使用项目渲染器的位置、应跨的列数、深度、用于创建项目渲染器的实例的ItemRenderer IFactory等。

在本例中,我们自定了一个AdvancedDataGridItemRenderer项目渲染器,它将性别字段数据渲染成表示性别的两张图片,而且该图片控件还有ToolTip功能。代码很简单,详见renderers\ADGItemRenderer.as。我们还自定了AdvancedDataGridGroupItemRenderer项目渲染器,它只是简单地画了一个有边线的矩形,弥补了由于分组列跨多列导致组项目之间没有边线的缺陷。详见renderers\ADGGroupItemRenderer。

本实例的难点在于怎样实现动态加载AdvancedDataGridRendererProvider实例。我们在profile.xml中新增了columnSpan属性,它对应AdvancedDataGridRendererProvider实例的columnSpan属性;新增renderer属性,它对应AdvancedDataGridRendererProvider实例的renderer属性。renderer属性是项目渲染器的限定类名。因此可以使用getDefinitionByName()方法返回其参数指定的类的类对象引用来动态加载AdvancedDataGridRendererProvider实例。

注意:在加载时我们还不得不声明相应的自定义的项目渲染器实例,不然会报错:Error #1065: 变量未定义。

点击此处查看本实例的效果,点击此处下载本实例的源码。

关于AdvancedDataGrid控件的美化就说这么多了,下次我们将讲解该控件的筛选功能。

发表评论