Flex实现DataGrid的序号列
要在Flex的DataGrid里添加序号列,大体上有两种方法:
设置DataGridColumn的labelFunction。
其大致的思路是,获取到当前DataGrid的dataProvider及当前行的data,调用getItemIndex方法获取到当前的行的序号。
具体可参考 http://wmcai.blog.163.com/blog/static/480242008111115724283/。这种方法比较直观,也很容易想到。
但重用性很差,其生成序号的labeldFunction无法重用。
设置DataGridColumn的ItemRenderer。
即自定义一个itemRenderer来处理序列号的生成。这种方法重用性很高。至于如何生成序号,这里需要些小技巧。
SequenceItemRenderer.as
package com.carnation.component.common
{
import mx.collections.IList;
import mx.controls.Label;
import mx.controls.listClasses.BaseListData;
import mx.controls.listClasses.ListBase;
public class SequenceItemRenderer extends Label
{
public function SequenceItemRenderer()
{
super();
}
// 另一种方法获取dataProvider并调用getItemIndex方法
// override public function set data(value:Object):void{
// super.data = value;
// text = (((listData.owner as ListBase).dataProvider as IList)
// .getItemIndex(data) + 1).toString();
// }
override public function set listData(value:BaseListData):void{
super.listData = value;
text = ((value.owner as ListBase).itemRendererToIndex(this) + 1).toString();
}
}
}
Test.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()">
<mx:Script>
<!--[CDATA[
import com.carnation.component.common.SequenceItemRenderer;
private var indexRenderer:Class = SequenceItemRenderer;
private function init():void{
var array:Array = [];
for(var i:int = 1; i <= 10; i++){
array.push({name:"name"+i.toString()});
}
grid.dataProvider = array;
}
]]-->
</mx:Script>
<mx:DataGrid id="grid">
<mx:columns>
<mx:DataGridColumn headerText="no" itemRenderer="{new ClassFactory(inde
相关文档:
估计不少做Flex的初学者和我一样,寻找让Flex背景图片平铺显示方法。
但现在我要告诉你的是Flex本身没有提供这种方法,至少在Flex3上是没有提供的。
所以就要自己写代码来实现这种效果,其实很简单的。
下面是我在网上找到的一个方法,然后自己做了一点小小的修改。
并做一个简单的例子放上来,你可以点这里下载。
......
提前声明,本文是个人原创,而且仅代表个人意见还看法,希望大家给予指正。
学习应用Flex应该也有1年了,曾经让我废寝忘食的技术,不敢说现在全部掌握了,但基本原理我已经明白了。这个时候透过了Flex那神秘的外表,透过了一层层的大雾,让我看的越来越清晰了。越来越能想明白 ......
Flex Builder 3.0 For Eclipse plugin准备安装.
2009-11-11 15:38
这两天准备学习Flex,于是下载了Flex Builder 3.0 For Eclipse plugin准备安装.
但是安装后启动Eclipse,找了半天也没找到Flex.而且Flex Builder会把JRE也安装.觉得这样很不爽.
所以我想到能不能来个Flex Builder绿色安装方法呢.
想到就做.下面是我的 ......
flex和C++服务器通信。因为安全沙漏问题,当swf位于A服务器,C++服务器程序位于B服务器时。
这时swf和B服务器建立Socket建立连接会产生跨域问题。
解决方法如下
swf建立socket时会先发起一个请求跨域文件的请求:"<policy-file-request/>"
服务器接收到后发送字符串
<?xml version="1.0"?>
<cross-doma ......