`

Flex DataGird Add RadioButton

 
阅读更多

问题:

在DataGrid追加RadioButton的时候,不能达到预期的单选效果。

下面提出解决方法和Source

<?xml version="1.0" encoding="utf-8"?>

<!--

ADOBE SYSTEMS INCORPORATED
Copyright 2008 Adobe Systems Incorporated
All Rights Reserved.

NOTICE: Adobe permits you to use, modify, and distribute this file
in accordance with the terms of the license agreement accompanying it.

-->

<!--- The default skin class for a Spark RadioButton component.

@see spark.components.RadioButton
@see spark.components.RadioButtonGroup
@langversion 3.0
@playerversion Flash 10
@playerversion AIR 1.5
@productversion Flex 4
-->
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
			 xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabledStates="1">
	
	<fx:Metadata>
		<![CDATA[
		/**
		* @copy spark.skins.spark.ApplicationSkin#hostComponent
		*/
		[HostComponent("spark.components.RadioButton")]
		]]>
	</fx:Metadata>
	
	<fx:Script>
		<![CDATA[
			/**
			 * @private
			 */
			private static const focusExclusions:Array = ["labelDisplay"];
			
			/**
			 * @private
			 */
			override public function get focusSkinExclusions():Array { return focusExclusions;};
		]]>
	</fx:Script>
	
	<s:states>
		<s:State name="up" />
		<s:State name="over" stateGroups="overStates" />
		<s:State name="down" stateGroups="downStates" />
		<s:State name="disabled" stateGroups="disabledStates" />
		<s:State name="upAndSelected" stateGroups="selectedStates" />
		<s:State name="overAndSelected" stateGroups="overStates, selectedStates" />
		<s:State name="downAndSelected" stateGroups="downStates, selectedStates" />
		<s:State name="disabledAndSelected" stateGroups="disabledStates, selectedStates" />
	</s:states>
	
	<s:Group verticalCenter="0" width="13" height="13">
		<!-- drop shadow -->
		<s:Ellipse left="-1" top="-1" right="-1" bottom="-1">
			<s:stroke>
				<s:LinearGradientStroke rotation="90" weight="1">
					<s:GradientEntry color="0x000000"
									 color.downStates="0xFFFFFF"
									 alpha="0.011"
									 alpha.downStates="0" />
					<s:GradientEntry color="0x000000"
									 color.downStates="0xFFFFFF"
									 alpha="0.121"
									 alpha.downStates="0.57" />
				</s:LinearGradientStroke>
			</s:stroke>
		</s:Ellipse>
		
		<!-- fill -->
		<s:Ellipse left="1" top="1" right="1" bottom="1">
			<s:fill>
				<s:LinearGradient rotation="90">
					<s:GradientEntry color="0xFFFFFF"
									 color.overStates="0xBBBDBD"
									 color.downStates="0xAAAAAA"
									 alpha="0.85" />
					<s:GradientEntry color="0xD8D8D8"
									 color.overStates="0x9FA0A1"
									 color.downStates="0x929496"
									 alpha="0.85" />
				</s:LinearGradient>
			</s:fill>
		</s:Ellipse>
		
		<!-- fill highlight -->
		<s:Path data="M 1 6 Q 2 2 6 1 Q 11 2 12 6 h -9">
			<s:fill>
				<s:SolidColor color="0xFFFFFF" alpha="0.33" />
			</s:fill>
		</s:Path>
		
		<!-- layer 6: highlight stroke (all states except down) -->
		<s:Ellipse left="1" right="1" top="1" bottom="1">
			<s:stroke>
				<s:LinearGradientStroke rotation="90" weight="1">
					<s:GradientEntry color="0xFFFFFF" color.downStates="0x939393" alpha.overStates="0.22" />
					<s:GradientEntry color="0xD8D8D8" color.downStates="0xB1B1B1" alpha.overStates="0.22" />
				</s:LinearGradientStroke>
			</s:stroke>
		</s:Ellipse>
		<s:Rect left="5" top="1" right="5" height="1">
			<s:fill>
				<s:SolidColor color="0xFFFFFF"
							  color.downStates="0x939393"
							  alpha.overStates="0.22" />
			</s:fill>
		</s:Rect>
		
		<!-- border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
		<s:Ellipse left="0" top="0" right="0" bottom="0">
			<s:stroke>
				<s:LinearGradientStroke rotation="90" weight="1">
					<s:GradientEntry color="0x000000" alpha="0.70" />
					<s:GradientEntry color="0x000000" alpha="0.80" />
				</s:LinearGradientStroke>
			</s:stroke>
		</s:Ellipse>
		
		<!-- dot -->
		<!--- Defines the appearance of the RadioButton's dot. To customize the appearance of the dot, create a custom RadioButtonSkin class. -->
		<s:Path left="4" top="4" includeIn="selectedStates" id="dot" itemCreationPolicy="immediate"
				data="M 2.5 0 Q 4.5 0.5 5 2.5 Q 4.5 4.5 2.5 5 Q 0.5 4.5 0 2.5 Q 0.5 0.5 2.5 0">
			<s:fill>
				<!--- @private
				Defines the appearance of the dot's fill. The default color is 0x000000. The default alpha is .9. -->
				<s:SolidColor id="dotFill" color="0" alpha="0.9" />
			</s:fill>
		</s:Path>
		<s:Path left="4" top="7" includeIn="selectedStates"
				data="M 0 0 Q 0.5 2 2.5 2.0 Q 3.5 2.0 4 0">
			<s:stroke>
				<s:LinearGradientStroke>
					<s:GradientEntry color="0xFFFFFF" alpha="0.3" />
					<s:GradientEntry color="0xFFFFFF" alpha="0.7" />
					<s:GradientEntry color="0xFFFFFF" alpha="0.3" />
				</s:LinearGradientStroke>
			</s:stroke>
		</s:Path>
	</s:Group>
	
	<!-- Label -->
	<!--- @copy spark.components.supportClasses.ButtonBase#labelDisplay -->
	<s:Label id="labelDisplay"
			 textAlign="start"
			 verticalAlign="middle"
			 maxDisplayedLines="1"
			 left="18" right="0" top="3" bottom="3" verticalCenter="2" />
	
</s:SparkSkin>

 

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
					xmlns:s="library://ns.adobe.com/flex/spark"
					xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
	
	<fx:Script>
		<![CDATA[
			
			//----------------------------------------------------------------------------------------------------------
			
			override public function prepare(hasBeenRecycled:Boolean):void
			{
				super.prepare( hasBeenRecycled );
				
				// We make the radio button mimic the selection status of the whole row.
				const selected_items: Vector.<Object> = grid.dataGrid.selectedItems;
				
				if( null == selected_items )
				{
					radio_button.selected = false;
					return;
				}
				
				if( -1 != selected_items.indexOf( data ) )
					radio_button.selected = true;
				else
					radio_button.selected = false;
			}
			
			//----------------------------------------------------------------------------------------------------------
			
		]]>
	</fx:Script>
	
	<!--The radio button is only a visual indicator for whether the row is selected or not.
	The "selected" property of the radio_button will be controlled by the "prepare" function.
	The radio_button should not be allowed any user interaction. Hence disabling it.-->
	<s:RadioButton id="radio_button"
				   label=""
				   enabled="false"
				   skinClass="NoDisabledRadioButtonSkin"
				   horizontalCenter="0" verticalCenter="0" />
	
</s:GridItemRenderer>

 

<?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" width="400" height="200" >
	<fx:Declarations>
		<fx:Array id="array_bees">
			<fx:Object label="Bumble Bee" />
			<fx:Object label="Honey Bee" />
			<fx:Object label="Stingless Bee" />
			<fx:Object label="Killer Bee" />
			<fx:Object label="Carpenter Bee" />
		</fx:Array>
		
		<s:ArrayCollection id="ac_bees" source="{ array_bees }" />
	</fx:Declarations>
	
	<s:DataGrid id="datagrid_bees"
				left="10" top="10"
				dataProvider="{ ac_bees }">
		<s:columns>
			<s:ArrayList>
				<s:GridColumn id="column_bee_radio_button" headerText=""
							  width="25" sortable="false"
							  itemRenderer="RadioButtonGridItemRenderer"></s:GridColumn>
				
				<s:GridColumn id="column_bee_name" headerText="Bee Name" dataField="label"
							  minWidth="200" maxWidth="300"/>
			</s:ArrayList>
		</s:columns>
	</s:DataGrid>
</s:Application>

 

0
1
分享到:
评论

相关推荐

    flex支持拖拽的DataGrid

    flex支持拖拽的DataGrid,如果去查api来置一些属性将会比较麻烦,这个DataGrid可以获取拖拽的内容,这是一个application,可以直接运行

    FLEX中DATAgird的学习

    在 Flex 开发中,`DataGrid` 是一个非常重要的组件,用于展示和操作结构化的数据。在本篇文章中,我们将深入探讨如何在 `DataGrid` 中应用编辑功能,包括 `editorDataField`、`itemEditor` 和 `itemRenderer` 的使用...

    flex通过httpService读取xml数据到datagird中

    flex通过httpService读取xml数据到datagird中,通过读取远程URL的XML数据(这里保存到本地),保存到ArrayCollection中,然后在将ArrayCollection绑定到datagird上 环境:flex3.0 可直接运行

    FLEX DATA GRID 分页

    在Flex开发中,数据网格(Data Grid)是一种常用的组件,用于显示大量结构化的数据,并提供交互功能,如排序、筛选和编辑。分页是管理大量数据流的关键特性,它允许用户逐页浏览数据,而不是一次性加载所有内容,...

    EasyUI学习之DataGird分页显示数据

    在本文中,我们将深入探讨如何使用EasyUI的DataGird组件实现分页显示数据。EasyUI是一个基于jQuery的轻量级前端框架,提供了丰富的UI组件,包括DataGird,用于展示表格数据并支持分页、排序、筛选等功能。 首先,...

    可用的datagird打印类

    可用的datagird打印类。记住datagird要添加样式,调用列子如下: DataGridPrintDocument dgp=new DataGridPrintDocument(dataGrid1,"用户列表",16); //string[] uplinestr={"呵呵,hehe","xixi"}; ...

    [DataGird]如何截取过长的字符串

    ### 数据网格(DataGrid)中如何处理过长的字符串 在数据展示应用中,尤其是在使用`DataGrid`组件时,我们经常会遇到这样的问题:当单元格中的文本长度超过了列的宽度时,显示效果会受到影响,例如文本被截断或换行等...

    easyui datagird增删改分页例子

    标题 "easyui datagird增删改分页例子" 提示我们这个压缩包包含一个使用EasyUI DataGrid实现数据操作和分页功能的示例。EasyUI是一个基于jQuery的前端框架,DataGrid是其组件之一,常用于展示表格数据并支持用户交互...

    Datagird增改删例子

    "Datagird增改删例子"这个项目旨在演示如何在C#环境下利用DataGridView实现数据的添加(Add)、修改(Edit)和删除(Delete)操作。在.NET环境中,我们可以结合数据库和ADO.NET技术来完成这些功能。 首先,`dgdemo_...

    c#.net Data导出DataGird 源码

    以下是对“c#.net Data导出DataGird源码”的详细分析。 ### 知识点一:C# .NET环境下数据导出至Excel的基本流程 #### 1. 设置HTTP响应头 在导出数据至Excel文件前,首先需设置HTTP响应头,以便浏览器能够识别该...

    让datagird支持鼠标滚轮

    在编程领域,尤其是在开发用户界面时,数据展示和交互是一个重要的环节。`Datagrid`控件通常被用于Windows应用程序中,用于显示和操作表格形式的数据。在这个特定的场景中,"让Datagrid支持鼠标滚轮"意味着我们需要...

    Wpf DataGird示例代码

    在Windows Presentation Foundation (WPF) 中,`DataGrid` 是一个强大的控件,用于展示和操作数据集。这个示例代码主要围绕四个关键功能展开:分组、过滤、排序和样式设计,这些都是在开发高效、用户友好的数据管理...

    datagird绑定

    ### DataGrid绑定详解 在.NET框架中,DataGrid是一个非常重要的控件,它主要用于显示、编辑及导航数据源中的数据。DataGrid控件提供了一种简单有效的方式来展示数据,并允许用户进行排序、筛选等操作。...

    jQuery EasyUI中DataGird动态生成列的方法

    EasyUI中使用DataGird显示数据列表中,有时需要根据需要显示不同的列,例如,在权限管理中,不同的用户登录后只能查看自己权限范围内的列表字段,这就需要DataGird动态组合列,下面介绍EasyUI中DataGird动态生成列的...

    动态datagrid xml动态datagrid xml动态datagrid xml动态datagrid xml

    动态DataGrid是编程领域中一个常见的话题,尤其是在Web开发中,它允许用户在运行时根据数据源自动生成列和行,极大地增强了用户界面的灵活性。本文将深入探讨动态DataGrid与XML之间的结合,以及如何利用XML数据源来...

    easyui-1.4 datagird 返回空数据重复请求的问题

    在IT行业中,前端框架EasyUI是一个广泛使用的工具集,它基于jQuery,提供了丰富的组件和便捷的API,用于构建用户界面。在本问题中,我们关注的是`easyui-1.4`版本的`datagrid`组件遇到的一个特定问题:当从后台获取...

    Python库 | DataGridBWC-0.1.0-py2.6.egg

    资源分类:Python库 所属语言:Python 资源全名:DataGridBWC-0.1.0-py2.6.egg 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

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

    cellStyle.Setters.Add(new Setter(Control.BackgroundProperty, Brushes.LightGray)); // 设置默认颜色 // 例如,将id为333的单元格颜色设为红色 Style redCellStyle = new Style(typeof(DataGridCell)); ...

Global site tag (gtag.js) - Google Analytics