Flex DataGrid 彻底删除某一行
?????? 说是彻底删除,其实不是的,因为删除DataGrid某一行的时候,据我现在水平,只能通过dataProvider来实现。
?
?????? 需求是这样的:
?
????????????? 系统需要做一个自定义组件,页面式的,根据前一个页面的DataGrid选项的值,动态构建下一页的内容。我的DataGrid中用到了渲染器(Combobox),当我在DataGrid中新增一行同时选择下拉列表的某一项,动态更新下一页的对应文本显示。当我删除某一行的时候,下一页的对应控件也要对应的删除。
?
????????????? 问题就出在删除上,当我删除某一行的时候,然后,在datagrid中再点击新增,这是,新的一行出来了,但是显示的是之前删除的一行的内容(从渲染器可以看出来),由于搞不懂datagrid的构建原理,所以,这个问题纠结了很久。经过反复思考,觉得既然渲染器还是使用的前一个实例,那么当我删除dataGrid中的dataProvider中的某一行数据时,是不是flex把这个渲染器实例给隐藏了,然后新增一行数据的时候它又把渲染器实例给显示出来。
?
??????????????沿着这个思路,在渲染器类中找相应的事件,终于找到了两个事件类别,那就是FlexEvent.HIDE 和 FlexEvent.SHOW。在这两个方法中处理渲染器隐藏和渲染器显示的代码。
FlexEvent.HIDE 处理逻辑中删除渲染器实例代码:this.removeChild(this);
??