`
allenofchina
  • 浏览: 22513 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在DataGrid中显示并绘制柱状图

阅读更多

DataGrid是显示数据列表的空间,在Swing里面它的对应控件是JTable。

通过DataGridColumn可以设置输出列的数据和表头。

在DataGridColumn中Flex提供了渲染器模式,可以通过自定义绘制来改变默认的显示形式。

这里面的实现方式略同于.Net。 其实我根本不擅长画UI。

 

这次要实现下面的效果



 

 

第一步需要实现一个自定义的渲染器(Renderer)。我取名为BarRenderer。基本来说,一个Renderer只需要有一个set data()方法,已便让DataGrid把数据赋给他。

但是我这里让BarRenderer继承了Canvas类,实现了IDataRenderer, IDropInListItemRenderer类。(下面虽然写着Java代码,其实是Flex代码,这里没有Flex用的代码格式)

 

 

public class BarRenderer extends Canvas implements IDataRenderer, IDropInListItemRenderer
{

}
 

IDataRenderer接口就是data的get set方法,DataGrid将会把整个一行数据放在里面

IDropInListItemRenderer接口里面是listData的get set方法,DataGrid会把一个类型为DataGridListData的数据赋给他。通过listData.owner可以取到DataGrid对象,通过listData.columnIndex方法可以取到当前是第几列。

 

然后在BarRenderer里面要重载updateDisplayList方法。在里面可以用

var g:Graphics = this.graphics;

 取到Graphics对象,然后可以通过这个对象来画图。

和Win32API一样,基点坐标是0,0

 

 

程序代码摘要如下

        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number): void {

             var g:Graphics = this.graphics;
             if (this.data) {
                 g.clear();
                 var df:String = this._dataField;
                 // ...
                 var cper:String = String(this.data[df]);
                 var percent:Number = Number(this.data.cper);
                 var width:Number = percent* unscaledWidth / 100;
                 if (percent >= 70) {
                    g.beginFill(0x78ff82);
                 }else if(percent < 70 && percent > 30) {
                    g.beginFill(0xF0FD82);
                 }else {
                    g.beginFill(0xFF2020);
                 }
                 g.drawRect(0, 0, width, unscaledHeight);
                 g.endFill();
             }
        }
 

 

2.编写MXML

 

编写MXML有两种方法,如果不需要自定义属性的话,就只要在DataGridColumn里面设置itemRenderer的值为BarRenderer的路径。

 

    <mx:DataGrid id="datagrid1" x="20" y="240" width="740" height="350" dataProvider="{members}">
        <mx:columns>
            <mx:DataGridColumn headerText="号码" width="80" dataField="no"/>
            <mx:DataGridColumn headerText="姓名" width="100" dataField="name"/>
            <mx:DataGridColumn headerText="拼音" width= "100" dataField="pinyin"/>
            <mx:DataGridColumn headerText="住所" dataField="address"/>
            <mx:DataGridColumn headerText="电话号码" width= "115" dataField="tel"/>
            <mx:DataGridColumn headerText="能力比" width= "100" dataField="cper" itemRenderer="heyesh.app.flex.common.renderer.BarRenderer">
            </mx:DataGridColumn>
        </mx:columns>
    </mx:DataGrid>

 

如果要自定义属性的话,就稍微复杂一点,如下

    <mx:DataGrid id="datagrid1" x="20" y="240" width="740" height="350" dataProvider="{members}">
        <mx:columns>
            <mx:DataGridColumn headerText="号码" width="80" dataField="no"/>
            <mx:DataGridColumn headerText="姓名" width="100" dataField="name"/>
            <mx:DataGridColumn headerText="拼音" width= "100" dataField="pinyin"/>
            <mx:DataGridColumn headerText="住所" dataField="address"/>
            <mx:DataGridColumn headerText="电话号码" width= "115" dataField="tel"/>
            <mx:DataGridColumn headerText="能力比" width= "100" dataField="cper">
                <mx:itemRenderer>
                    <mx:Component>
                        <renderer:BarRenderer dataField="cper">
                        </renderer:BarRenderer>
                    </mx:Component>
                </mx:itemRenderer>
            </mx:DataGridColumn>
        </mx:columns>
    </mx:DataGrid>

 

最后把代码传上来,随便写写的,大家看不懂可以问我

  • 大小: 26.6 KB
3
0
分享到:
评论

相关推荐

    WPF DataGrid 中显示图片的小例子

    然而,除了基本的文本和数字数据外,有时我们还需要在DataGrid中显示图像。本教程将详细介绍如何在WPF的DataGrid控件中嵌入并显示图片。 首先,我们需要理解WPF DataGrid的基本结构。DataGrid通常与数据源绑定,如...

    结合ashx在DataGrid中显示数据库中图片

    为了在DataGrid中显示数据库中的图片,我们需要进行以下步骤: #### 3.1 数据库查询 首先,我们需要从数据库中查询包含图片数据的记录。这通常涉及到对数据库表的SQL查询,例如从“employees”表中选择包含员工ID...

    easyUI中datagrid鼠标悬浮显示图片

    easyUI中datagrid鼠标悬浮显示图片,博客地址:https://blog.csdn.net/lwf3115841/article/details/119531658?spm=1001.2014.3001.5501

    在DataGrid中显示和隐藏某一列

    总之,在WPF的DataGrid中显示或隐藏某一列,主要是通过获取列对象并改变其Visibility属性来实现的。结合事件处理、数据绑定和逻辑判断,你可以灵活地控制DataGrid的显示效果,以满足各种用户交互需求。在实际项目中...

    DataGrid中嵌套DataGrid

    而"DataGrid中嵌套DataGrid"是一种复杂但非常实用的技术,它允许在一个DataGrid的行或列中内嵌另一个DataGrid,以展示层次化数据或相关联的数据集。这种技术同样适用于DataGrid与DataList,以及DataList之间的嵌套,...

    wpf加载图片到datagrid动态控件

    本教程将详细介绍如何在VS2010环境下,利用C#编程语言实现在WPF项目中动态加载图片并显示在DataGrid控件中。 首先,我们需要创建一个WPF项目。打开Visual Studio 2010,选择“文件” &gt; “新建” &gt; “项目”,在项目...

    在flex的dataGrid控件中显示图片的实践

    本文将深入探讨如何在DataGrid中显示图片,特别是在与Spring、Hibernate和Struts等框架集成的背景下,如何处理二进制数据并将其在Flex前端呈现。 首先,让我们了解Flex的基本概念。Flex是一个基于ActionScript和...

    DataGrid中嵌入comBox

    本文将详细讲解如何在DataGrid中实现这一功能,并结合MVVM(Model-View-ViewModel)设计模式来增强可维护性和可测试性。 首先,了解MVVM模式。它是WPF和XAML应用中常用的设计模式,分离了用户界面(View)、业务...

    c#源码DataGrid中显示GIF动画

    下面我们将详细探讨如何在C#的DataGrid中显示GIF动画。 首先,我们需要了解DataGrid的基本结构和工作原理。DataGrid控件通常与数据源绑定,如DataTable、BindingSource或Entity Framework等。它会根据数据源中的...

    datagrid显示图片并点击放大浏览样式文件.zip

    在datagrid中显示图片通常涉及到以下步骤: 1. 数据源配置:在datagrid的数据源中,需要包含一个字段来存储图片的URL或者Base64编码的图片数据。例如,可以有一个名为`imageUrl`的字段。 2. 列模板定义:在...

    在DataGrid控件中设置单元格的数据显示格式.

    在.NET框架中,DataGrid控件是一个常用的组件,用于显示数据源中的表格数据。它广泛应用于Windows Forms和ASP.NET应用程序中。本节我们将深入探讨如何在DataGrid控件中设置单元格的数据显示格式,以便更好地呈现和...

    WPF_MVVM中DataGrid列中使用ComBox绑定

    在DataGrid中,我们通常会为特定列定义一个DataTemplate,以便在该列中显示ComBox。 为了在MVVM模式下实现ComBox的双向绑定,我们需要创建一个ViewModel类,其中包含与ComBox相关的属性和命令。例如,如果ComBox是...

    DataGrid 中加入图标

    DataGrid控件是许多编程语言和框架中的常见组件,用于在表格形式中显示和操作数据。在这个场景中,"DataGrid 中加入图标"是一个重要的知识点,它涉及到如何在DataGrid的单元格或者行中添加图标,以增强数据的可视化...

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

    这个场景下,用户可能需要实现一个常见的功能,即在DataGrid中添加CheckBox,允许用户进行多选操作,尤其是全选功能。这篇博客“在DataGrid中使用CheckBox,实现全选功能”详细介绍了如何实现这一需求。 首先,我们...

    WPF中的DataGrid、Button、ComboBox等样式+DataGrid分页控件

    在标题提到的“WPF中的DataGrid、Button、ComboBox等样式+DataGrid分页控件”中,我们将深入探讨这些关键组件以及如何自定义它们的样式和实现分页功能。 首先,DataGrid是WPF中用于展示和编辑表格数据的强大控件。...

    C# 读取Excel到DataGrid表格中

    在.NET框架中,C#是一种...总之,使用C#结合第三方库如EPPlus,我们可以方便地读取Excel文件并将其数据呈现到DataGrid中,实现数据的可视化和交互。这在报表生成、数据分析或任何需要从Excel导入数据的场合都非常有用。

    easyui下datagrid嵌套显示相关文件

    后端返回子数据后,前端会将这些数据填充到嵌套的datagrid中,从而实现主从数据的联动显示。 总结来说,"easyui下datagrid嵌套显示"涉及到前端HTML和JavaScript的交互设计,后端PHP的数据库查询和数据封装,以及...

    DataGrid当鼠标划过每行时,在ToolTip中显示每行数据的详情

    通过以上步骤,你就能在DataGrid中实现当鼠标划过每行时显示详细的ToolTip效果。这种方法增强了用户对数据的感知,尤其是在数据量较大且无法完全展示在屏幕上的情况下。在实际项目中,可以结合你的业务需求,对这个...

    鼠标移动DataGrid显示详细信息

    - 接着,在 `DataGrid1_ItemDataBound` 事件处理程序中,为 DataGrid 的每一项添加了相应的事件处理函数,实现了鼠标悬停时显示详细信息的功能。 #### 5. 总结 本篇文章介绍了如何通过结合 JavaScript 和 ASP.NET ...

Global site tag (gtag.js) - Google Analytics