`

转载使用DataGrid中扩展ItemRenderer和HeaderRenderer进行操作

阅读更多


(1)有关ItemRenderer的类实现IDataRenderer和IDropInListItemRenderer接口。

<script type="text/javascript"><!-- document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length > 300) { text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } } // --></script>

很多flex control类都默认实现了IDataRenderer接口,比如Button、Container、TextArea等等。很多flex control类也实现了IDropInListItemRenderer接口,但可惜Container没有默认实现。而我做的东西,需要绘图,所以直 接利用Canvas扩展,就必须自己实现IDropInListItemRenderer接口,来获取ListData对象。

   1. private var _listData:BaseListData;  
   2.   
   3. // Make the listData property bindable.  
   4. [Bindable("dataChange")]  
   5.   
   6. public function get listData():BaseListData  
   7. {  
   8.   return _listData;  
   9. }  
  10.   
  11. public function set listData(value:BaseListData):void  
  12. {  
  13.   _listData = value;  
  14. }  
 

 

<script type="text/javascript"><!-- function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); } // --></script> 再比如自己控制显示复杂视图,比如Gantt图之类。这就 必须扩展ItemRenderer和HeaderRenderer。

可惜俺刚开始不知道之个,所以耗费了很长时间,花费在寻找如何获取当前Column index问题上。

这样,我才可以在setData方法中,获取到DataGridColumn对象,如下(我使用的是AdvancedDataGrid对象):

var dg:AdvancedDataGrid = this.owner as AdvancedDataGrid;  
//listData就是实现IDropInListItemRenderer接口所可以获取的  
var gdgc:GanttAdvancedDataGridColumn =   
      dg.columns[listData.columnIndex] as GanttAdvancedDataGridColumn;  
 

(2)扩展DataGridColumn对象来增加属性,传递参数。

有些属性我需要动态从外面传递进来,但有不属于list data数据的部分。而Grid Header需要利用这些数据做一些渲染操作。这时候就需要扩展实现DataGridColumn对象,同时在HeaderRenderer对象中获取此 DataGridColumn对象来获取参数。

如下是扩展的一个AdvanceDataGridColumn使用,在这个扩展中,增加了startDate和lastDate两个属性

< gantt:GanttAdvancedDataGridColumn   id = "ganttColumn"   headerText = "Gantt"   itemRenderer = "{ganttItemEditor}"   headerRenderer = "{ganttHeaderEditor}"   minWidth = "400" />   


这样,就可以在application初始化的时候,在外部对此Column进行设置:

ganttColumn.startDate =  new  Date(startTime);  
ganttColumn.lastDate = new  Date(lastTime);  


在HeaderRenderer中,在setData方法中,可以获取相应的对象和参数
override   public  function  set  data(value:Object): void {  
    super.data = value;  
    var advancedDataGridColumn:GanttAdvancedDataGridColumn   
                      = value as  GanttAdvancedDataGridColumn;  
    if (advancedDataGridColumn!= null ){  
    if (advancedDataGridColumn.startDate!= null ){  
        startDate = advancedDataGridColumn.startDate;  
        lastDate = advancedDataGridColumn.lastDate;  
        render();  
    }  
    }  
}             

(3)利用labelFunction进行显示数据格式化

比如我想对日期数据进行格式化操作,如下所示:

private  function date_labelFunc(item:Object, column:AdvancedDataGridColumn):String {      
    var dateFormatter:DateFormatter = new  DateFormatter();  
    dateFormatter.formatString = "YYYY-MM-DD HH:NN" ;  
    var td:Date = new  Date(  new  Number(item[column.dataField]) );  
    return  dateFormatter.format( td );  
}  

在mx的datagridcolumn中,就可以引用这个label function

< mx:AdvancedDataGridColumn   headerText = "startTime"   dataField = "startTime"   labelFunction = "date_labelFunc"   width = "120" />   

 

分享到:
评论

相关推荐

    使用DataGrid中扩展ItemRenderer和HeaderRenderer进行操作

    总结来说,DataGrid中的ItemRenderer和HeaderRenderer提供了强大的扩展点,使得开发者可以自由地定制数据的展示方式。在需要进行图形绘制时,通过实现IDropInListItemRenderer接口并扩展DataGridColumn对象,可以...

    DataGrid的itemRenderer and HeaderRenderer

    实现多选功能时,除了在`itemRenderer`中使用`CheckBox`,还需要维护一个记录已选中项的数组。每次`CheckBox`的`change`事件触发时,更新这个数组。在处理全选/全取消选择时,也要同步这个数组。此外,还可以添加一...

    Flex itemRenderer的详细教程

    这种类型的 ItemRenderer 主要在简单的应用中使用,它能够快速地为列表中的每一项提供基本的样式和布局。 **示例代码:** ```xml &lt;mx:DataGrid id="dgBooks" width="100%" height="100%"&gt; &lt;mx:itemRenderer&gt; ...

    WPF MVVM 模式使用DataGrid

    **在MVVM中使用DataGrid** 1. **数据绑定**:在MVVM中,DataGrid的数据源通常通过ViewModel中的ObservableCollection对象进行绑定。ObservableCollection是.NET Framework提供的一种动态数据集合,当集合中的元素...

    flex as actionscript datagrid 背景色 flash itemRenderer script iframe overrider 跳转到别的页面

    6. **IFrame overrider**: 这可能是指在ItemRenderer中使用IFrame元素来加载外部网页内容。IFrame可以作为一个容器,将其他网页嵌入到Flex应用中,这样用户可以直接在DataGrid的一个单元格内浏览其他页面。 7. **...

    FLEX4实践—动态生成DataGrid及应用客户化itemRenderer.doc

    `itemRenderer`是`DataGrid`中每个单元格的可视化表示,可以定制单元格的外观和行为。在这个例子中,针对`DATE`类型的列,我们可以创建一个自定义的`itemRenderer`类,该类能够接收日期对象并将其转化为用户友好的...

    在DataGrid中进行复选框的操作(全选和取消)

    在.NET框架中,`DataGrid`控件是一个用于展示数据表格的强大工具,它允许用户以交互方式查看和编辑数据。在某些应用场景下,我们可能需要在`DataGrid`的每一行添加复选框,以便用户可以多选操作,如全选和取消全选...

    Flex中DataGrid和其它控件使用

    5. **HeaderRenderer**和**ItemRenderer**:这两个组件允许我们自定义DataGrid的列头和单元格的外观和行为,以满足特定的界面设计需求。 6. **Sort功能**:DataGrid支持单击列头进行排序,可以自定义排序逻辑。在...

    利用ADO和DATAGRID及HFLEXGRID方法对ACCESS进行操作

    以下是使用ADO、DATAGRID和HFLEXGRID进行ACCESS数据库操作的基本步骤: 1. **建立ADO连接**:首先,我们需要创建一个CADOConnection对象,设置连接字符串(包括数据库路径、用户名和密码),然后调用Open()方法建立...

    wpf通过datagrid操作数据库,实现datagrid增删改操作。

    在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)环境中使用DataGrid控件来操作数据库,实现数据的添加、删除和修改功能。DataGrid是WPF中的一个强大控件,它允许用户以表格的形式展示和编辑...

    给DataGrid自定义Header功能

    然而,DataGrid的默认功能往往无法满足所有需求,这时我们就需要进行自定义扩展,比如自定义Header。标题“给DataGrid自定义Header功能”和描述“给DataGrid添加自定义的headerRenderer,实现在Header上自己添加想要...

    DataGrid中嵌套DataGrid

    3. 绑定数据源:使用DataSourceID属性将DataGrid与数据源关联,或者在代码-behind中使用DataBind()方法手动绑定。 4. 自定义列和样式:通过设置Columns属性来指定显示哪些字段,以及如何格式化它们。 对于嵌套...

    WPF_MVVM中DataGrid列中使用ComBox绑定

    总结来说,WPF MVVM中在DataGrid列中使用ComBox绑定,需要理解DataGrid、DataTemplate、ComBox以及MVVM的双向绑定原理。通过定义ViewModel、设置DataGrid和ComBox的绑定属性,以及处理命令,我们可以实现用户在...

    flex itemRenderer 渲染机制的概念和使用

    在itemRenderer中,我们可以使用数据绑定来访问当前项的数据。`data`变量会自动赋值为当前渲染的数据项。例如,如果数据项包含一个名为`title`的属性,可以这样绑定: ```xml ``` 4. **事件处理** ...

    DataGrid中嵌入comBox

    在Windows Presentation Foundation(WPF)开发中,DataGrid控件是一种强大的工具,用于展示和编辑表格数据。在某些场景下,我们可能需要在DataGrid的某一列中嵌入ComboBox控件,以提供用户多选或者下拉选择的功能。...

    vb中datagrid控件的详细使用方法

    除了基本功能外,`DataGrid`还可以通过扩展来实现更多自定义功能,例如添加按钮列进行操作,或者添加下拉列表选择。 总的来说,`DataGrid`控件在VB中提供了强大的数据展示和操作能力,理解并熟练运用它的各种特性...

    easyui的datagrid中editor和combogrid的结合使用

    #### 三、在datagrid中使用combogrid作为editor 在本案例中,作者希望实现在datagrid中编辑某列数据时,使用combogrid作为编辑器的功能。具体来说,当用户选择一个分类时,能够自动显示出该分类对应的价格和单位...

    在DataGrid中使用CheckBox,实现全选功能

    在.NET框架中,Windows Forms和WPF应用中经常使用DataGrid控件来展示和操作数据。这个场景下,用户可能需要实现一个常见的功能,即在DataGrid中添加CheckBox,允许用户进行多选操作,尤其是全选功能。这篇博客“在...

    wpf通过datagrid操作数据库

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF)环境中使用DataGrid控件来操作数据库。DataGrid是WPF提供的一种强大的数据展示和编辑工具,它允许用户直观地与数据进行交互,包括添加、删除和...

Global site tag (gtag.js) - Google Analytics