首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

对itemrenderer的一些认知(三)-itemeditor

2012-11-23 
对itemrenderer的一些认知(3)-itemeditor这篇就讲一下itemrenderer的兄弟itemeditor,因为要在DataGrid里的

对itemrenderer的一些认知(3)-itemeditor
   这篇就讲一下itemrenderer的兄弟itemeditor,因为要在DataGrid里的好几列显示用不同的components来修改数据,如果一上来全用itemrenderer当然可以做,但不太好看也太heavy了,所以用itemeditor来一起用就爽多了。之前对itemeditor的用法没有深究,原因是一直觉得他没什么不一样,后来仔细看了看,发现他还是很强大的,让我更愿意用他了。

   首先,itemrenderer相对更固定,写好什么就是什么,adobe的本意应该也就是用他来显示,当然你也可以直接用control类的component,但就heavy了。itemeditor就更加灵活,是可动态编辑的的renderer,当你点击某个cell的时候,会触发itemEditBeginning/itemEditBeginevent这种cell editing events,这样就可以listen之后在方法中去编辑这个cell,比如直接更改data,把当前的Text换成ComboBox,这些特性就是我们想要的。

   对于两者的区别大家可以参考:
   http://www.adobe.com/devnet/flex/articles/itemeditors_pt1.html
   http://blog.csdn.net/cfhacker007/article/details/5784505
   http://hongweiwang1984.blog.163.com/blog/static/2726776200958104047426/, 我觉得写的还不错.

   另外一点区别是itemrenderer的显示最好用labelFunction调整,而itemeditor就是不存在显示问题,因为本来就是编辑的区域,这里就不细说了,之前只用itemrenderer时搞了搞,有兴趣的同学可以自己看看。

   两者在一起用是最好的,这样会更好看也效率也有保证。

   下面例子就是两者一起用的,先用一个DataGridItemRenderer作为itemrenderer显示plain数据,当点击时,用itemeditor显示出一个Combobox或TextArea用于更改数据:

public class EditRenderer extends DataGridItemRenderer{public var datafieldname:String;private var bgColor :uint = 0xffffff;public function EditRenderer(){super();}override public function set data(value:Object):void {super.data = value;if(value){var curval:* = value[datafieldname];this.bgColor = 0xffffff;if(curval != ""){this.bgColor = 0x363636;this.background=true;}else{this.bgColor = 0xffffff;this.background = false;}}}override public function validateNow():void{        super.validateNow();        this.backgroundColor = bgColor;        }}

   这样就好了,当前的datagrid显示的就跟普通时一样,但当点击了第3或4列的一格后,就会相应的用Combobox或TextArea加载进来,这时就可以编辑了,通过这样的方式,不仅能使datagrid显示的更精简也更美观而且也保证了运行里的效率。

   总是觉得ItEye编器很不太爽,可能是不怎么会用,所以注释会少一点,如果有什么问题评论里就行。

热点排行