`
luhantu
  • 浏览: 202933 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex DataGrid 动态改变headerRender 属性&itemRender 改变单元格颜色

    博客分类:
  • Flex
阅读更多

很多时候会用到动态改变datagrid的headerRender 或者itemRender的属性值,也会有设置单元格的颜色的要求。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:render="com.render.*">
	<fx:Declarations>
		<fx:XMLList id="employees">
			<employee>
				<name>Christina Coenraets</name>
				<phone>555-219-2270</phone>
				<email>ccoenraets@fictitious.com</email>
				<active>true</active>
				<credit>101</credit>
			</employee>
			<employee>
				<name>Joanne Wall</name>
				<phone>555-219-2012</phone>
				<email>jwall@fictitious.com</email>
				<active>true</active>
				<credit>80</credit>
			</employee>
			<employee>
				<name>Maurice Smith</name>
				<phone>555-219-2012</phone>
				<email>maurice@fictitious.com</email>
				<active>false</active>
				<credit>-110</credit>
			</employee>
			<employee>
				<name>Mary Jones</name>
				<phone>555-219-2000</phone>
				<email>mjones@fictitious.com</email>
				<active>true</active>
				<credit>0</credit>
			</employee>
		</fx:XMLList>
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			public var testBaseValue:int;
			protected function outterHandler(event:MouseEvent):void
			{
				//内部的render可以直接改变外面的值来改变属性
				testBaseValue = 1;
				dg.dataProvider.refresh();
			}
			
			protected function innerAndOutterHandler(event:MouseEvent):void
			{
				(header1.headerRenderer as ClassFactory).properties = {'baseValue':1};// 不管内部还是外部的render都可以通过此方法动态赋值
				header1.headerRenderer = header1.headerRenderer;
				dg.dataProvider.refresh();
			}
			
		]]>
	</fx:Script>
	<s:layout>
		<s:VerticalLayout/>
	</s:layout>
	<s:Button label="Inner Outter Change properties" click="innerAndOutterHandler(event)"/>
	<s:Button label="Outter Change properties" click="outterHandler(event)"/>
	<mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
		<mx:columns>
			<mx:DataGridColumn dataField="name" headerText="Name" id="header1" 
							   headerRenderer="com.render.CustomHeadRender"/>
			<mx:DataGridColumn dataField="phone">
				<mx:headerRenderer>
					<!--这个是内部render-->
					<fx:Component>
						<render:CustomHeadRender>
							<fx:Script>
								<![CDATA[
									override public function validateProperties():void
									{
										super.validateProperties();
										//用outerDocument来访问外部的属性和方法
										if(outerDocument.testBaseValue == 1)
										{
											this.text = "CustomHeader2";
										}
										else
										{
											this.text = "DefaultHeader2";
										}
									}
								]]>
							</fx:Script>
						</render:CustomHeadRender>
					</fx:Component>
				</mx:headerRenderer>
			</mx:DataGridColumn>
			<mx:DataGridColumn dataField="credit" headerText="Credit" itemRenderer="com.render.CustomItemRender"/>
		</mx:columns>
	</mx:DataGrid>
</s:Application>

 CustomHeadRender.as

package com.render
{
	import mx.controls.dataGridClasses.DataGridItemRenderer;
	/*这个是外部render*/
	public class CustomHeadRender extends DataGridItemRenderer
	{
		private var _baseValue:int;
		public function set baseValue(value:int):void
		{
			_baseValue = value;
		}
		
		public function get baseValue():int
		{
			return this._baseValue;
		}
		
		override public function validateProperties():void
		{
			super.validateProperties();
			if(baseValue == 1)
			{
				this.text = "CustomHeader1";
			}
			else
			{
				this.text = "DefaultHeader1";
			}
		}
		
	}
}

 CustomItemRender.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
						  xmlns:s="library://ns.adobe.com/flex/spark" 
						  xmlns:mx="library://ns.adobe.com/flex/mx" 
						  focusEnabled="true" autoDrawBackground="{autoDrawBackGroup}" alternatingItemColors="{color}">
	<fx:Script>
		<![CDATA[
			// 更改单元格背景色和字体颜色
			import mx.controls.listClasses.BaseListData;
			[Bindable]private var color:uint;
			[Bindable]private var autoDrawBackGroup:Boolean;
			override public function set listData(value:BaseListData):void
			{
				super.listData = value;
				if(!isNaN(Number(listData.label)))
				{
					if(Number(listData.label) > 100)
					{
						color = 0xff0000;
					}
					else if(Number(listData.label) > 0)
					{
						color = 0x00ff00;
					}
					else
					{
						color = 0xffffff;
					}
					autoDrawBackGroup = color != 0xffffff;
				}
			}
		]]>
	</fx:Script>
	<s:Label id="lblData" top="0" left="0" right="0" bottom="0" text="{dataGridListData.label}" color="{0xffffff - color}"/>
</s:MXDataGridItemRenderer>

 

0
0
分享到:
评论

相关推荐

    wpf datagrid 单元格颜色 根据条件改变颜色 例子

    例如,我们可以创建一个自定义的附加属性,然后在单元格的后台代码中根据这个属性改变颜色。 在提供的压缩包文件"DatagridCellColor"中,很可能包含了示例代码,演示了如何实现上述的一些方法。通过学习和理解这些...

    Flex 自定义Datagrid的ItemRender

    本文将深入探讨如何在Flex中自定义Datagrid的ItemRender,以实现按钮、单选、复选和日期等控件的集成。 首先,我们需要了解ItemRender的基本概念。ItemRenderer是Flex提供的一种机制,允许开发者为数据网格中的每一...

    改变flex DataGrid单元格字体颜色

    本知识点将详细讲解如何根据DataGrid中的数据属性来动态改变单元格的字体颜色,以增强视觉效果并突出关键信息。 首先,我们需要了解Flex中的DataGrid工作原理。DataGrid是基于MX组件集的一部分,它通过绑定到数据...

    wpf datagrid 单元格颜色 根据datatable动态显示datagrid内容

    本主题将深入探讨如何根据DataTable中的数据动态显示DataGrid的内容,并且根据特定条件改变单元格的颜色。 首先,我们需要了解DataGrid的基本用法。DataGrid控件允许我们将数据绑定到各种数据源,如...

    flex DataGrid改变指定行的背景颜色

    这可以通过监听`data`属性的变化来实现,如在上面的`CustomRowRenderer`中,当`data`属性改变时,会重新计算背景颜色。 5. **优化性能** 当DataGrid包含大量数据时,频繁改变ItemRenderer的颜色可能会对性能造成...

    C#实现改变DataGrid某一行和单元格颜色的方法

    如果需要动态改变颜色,可能需要监听某些事件,如`LoadingRow`事件,当行加载时进行相应的颜色设定。 通过以上步骤,你可以在C#中实现改变DataGrid的行和单元格颜色。这不仅涉及到了DataGrid控件的基本用法,也...

    Flex DataGrid 改变某一行的背景颜色

    总结,改变Flex DataGrid中某一行的背景颜色通常涉及自定义ItemRenderer、使用CSS样式或者监听事件。选择哪种方法取决于具体需求,如是否需要复杂逻辑、性能要求以及代码可维护性等因素。通过这些技术,我们可以使...

    wpf中datagrid动态设置单元格背景

    当我们需要根据数据的某些条件动态改变`DataGrid`中单元格的背景颜色时,就需要对控件进行一些定制化操作。以下将详细讲解如何实现这个功能。 首先,我们需要理解`DataGrid`的基本结构。`DataGrid`的每一行由多个`...

    flex DataGrid 表头分组

    在Flex开发中,数据网格(DataGrid)是用于展示大量结构化数据的常用组件。它允许用户以表格的形式查看和操作数据。当我们处理的数据需要进行分类或者分组时,Flex DataGrid 提供了表头分组的功能,这使得数据的展示...

    flex datagrid 前台 分页

    Flex DataGrid是一款强大的数据展示组件,常用于Adobe Flex或Flash Builder等开发环境中。它能够高效地展示大量数据,并提供丰富的用户交互功能。在本场景中,我们关注的是“前台分页”这一技术。 前台分页是指在...

    Flex Datagrid checkbox实现

    Flex Datagrid 是Adobe Flex框架中用于展示数据集的组件,它允许开发者以表格形式展示数据,并提供多种交互功能。在Flex应用中,Datagrid经常被用于处理和展示大量的结构化数据。在标题“Flex Datagrid checkbox实现...

    flex DataGrid xml 动态数据列表实例

    在这个实例中,我们将探讨如何利用Flex的`DataGrid`组件结合XML文件来实现动态数据列表。 首先,让我们深入了解`DataGrid`组件。`DataGrid`是Flex提供的一个可自定义的、可滚动的数据容器,它允许用户以网格形式...

    flex datagrid 嵌套checkbox实现全选

    在Flex开发中,数据网格(DataGrid)是用于展示数据集合的强大组件,它允许用户以表格形式查看和操作数据。本示例关注的是在DataGrid中嵌套复选框(Checkbox),并实现全选功能。这在需要用户批量选择或操作数据的...

    Flex dataGrid 全选、反选

    在Flex编程中,DataGrid组件是用于展示结构化数据的强大工具。它允许用户对数据进行排序、筛选和编辑。在实际应用中,我们经常需要实现全选和反选功能,以便用户可以一次性选择或取消选择所有条目。本文将详细讨论...

    flex datagrid分页 动态绑定数据源

    本篇文章将深入探讨“flex datagrid分页动态绑定数据源”的相关知识点。 首先,让我们理解Flex Datagrid的基本概念。Flex Datagrid是一个灵活的数据呈现控件,能够处理各种数据源,包括ArrayCollection、...

    将Flex DataGrid数据导出到Excel中

    - **设置样式**:如果需要,你可以设置单元格的样式,比如字体、颜色、边框等,以匹配Flex DataGrid的外观。 - **保存文件**:最后,将工作簿写入到磁盘上,生成一个Excel文件。 5. **返回响应**: Java服务端...

    flex 中datagrid 动态攺变行颜色

    下面将详细介绍如何在Flex中实现Datagrid动态改变行颜色。 首先,我们需要了解Flex中的Datagrid组件。Datagrid是MX组件库中的一个控件,它允许我们显示二维的数据集合,并支持排序、分页和选择功能。默认情况下,...

    FLEX4 s:dataGrid单元格弹出可文本

    在给定的标题“FLEX4 s:dataGrid单元格弹出可文本”中,我们关注的是如何实现点击`DataGrid`的单元格后弹出一个自定义组件,展示更多或更详细的信息。 在Flex4中,我们可以利用事件监听和自定义组件来实现这一功能...

    flex datagrid

    Flex DataGrid 是 Adobe Flex 中一个重要的组件,用于展示结构化数据。它以表格形式呈现,非常适合用来显示多列数据,并提供了排序、选择、编辑等多种功能。在这个教程中,我们将深入探讨 DataGrid 的基本使用和一些...

    flex datagrid 改变

    1. **样式修改**:使用CSS或MXML中的StyleName属性改变DataGrid的整体样式,或者通过CSS类来改变特定列的样式。 2. **数据绑定**:通过Binding表达式将数据模型绑定到DataGrid,实现数据的动态更新。 3. **列定制*...

Global site tag (gtag.js) - Google Analytics