`

行渲染和列渲染

    博客分类:
  • js
 
阅读更多

一,单元格渲染
   单元格是最终显示的数据地方,它是根据列定义信息设置来显示的,主要通过renderer属性来渲染的,可以通过这个属性设置单元格的最终渲染效果。
 var cm = new Ext.grid.ColumnModel([
         { header: '编号', dataIndex: 'id' },
         { header: '姓名', dataIndex: 'name' },
         { header: '性别', dataIndex: 'sex',
           renderer: function(value) {    --通过列的渲染函数来定义
                 if (value == 'male') {
                     return "<span style='color:red; font-weight:bold;'>" + value + "</span>";
                 } else {
                    return "<span style='color:green; font-weight:bold;'>" + value + "</span>";
                 }
             }
         },
         { header: '描述', dataIndex: 'descn' },
         { header: '日期', dataIndex: 'date', type: 'date', renderer: Ext.util.Format.dateRenderer('Y年m月d日') }
    ]);
   你也可以把列渲染的函数定义在外面,然后指定给renderer函数。通过这里可以看到为单元格添加图片也就比较容易了,只需要指定相应的
图片标签就可以了,如:
  function renderSex(value){
    if(value == '男'){
        return "<span style='color:red; font-weight:bold;'>男</span><img src='user_male.png' />";
     } else {
        return "<span style='color:red; font-weight:bold;'>女</span><img src='user_male.png' />";
     }
 }
其实表格在渲染的时候提供了很多参数,通过它我们可以获取很多有用的信息,下面就是逐一介绍这些参数:
value:    将要显示到单元格的值
cellmeta:单元格的相关属性,主要有id 和 css
record:  单元格所在行的数据对象,如果要获取其他列的数据值,可以通过:record.data["id"] 的方式得到.
rowIndex: 行号
columnIndex: 列号
store:  构造表格时传递的ds。也就是说,表格所有的数据都可以通过store获得。
如:
function(value, cellmeta, record, rowIndex, columnIndex, store) {
                 var str = "<input type='button' value='查看详细信息' onclick='alert(\"" +
                         "这个单元格的值是:" + value + "
\\n" +
                         "这个单元格的配置是:{cellId:" + cellmeta.cellId + ",id:" + cellmeta.id + ",css:" + cellmeta.css + "}\\n" +
                         "这个单元格对应的行的record是:" + record + ", 一行的数据都在里边
\\n" +
                         "这是第" + rowIndex + "行
\\n" +
                         "这是第" + columnIndex + "列
\\n" +
                         "这个表格对应的Ext.data.Store在这里: " + store + ",随便用吧." +
                         "\")'>";
                 return str;   -- 注意一定要return这个值。
}
  上面的方法把单元格渲染成了一个按钮,通过单击按钮,弹出单元格的信息, 注意最后一定要return 。

 
二、 给表格的行和列设置颜色
1, 给行设置颜色
本例主要通过指定每一列的颜色的方式,给表格行设置颜色。
<style type="text/css">
      .white-row{ background-color: white; }
      .red-row{ background-color: #F5C0C0 !important; }
      .yellow-row{ background-color: #FBF8BF !important; }
      .green-row{ background-color: #99CC99 !important; }
</style>
 Ext.onReady(function() {
        var PersonRecord = Ext.data.Record.create([            --创建一行记录
                          { name: 'name', type: 'string' },
                          { name: 'sex', type: 'int' },
                          { name: 'color', type: 'string' }
                         ]);

        var data = [                                            --创建4行数据
                      ['boy', 0, '#FBF8BF'],
                      ['girl', 1, '#99CC99'],
                      ['man', 0, '#F5C0C0'],
                      ['woman', 1, '#FFFFFF']
                   ];

        var store = new Ext.data.Store({
                    proxy: new Ext.data.MemoryProxy(data),
                    reader: new Ext.data.ArrayReader({}, PersonRecord)   --解析数据
                });
                
        store.load();

      var grid = new Ext.grid.GridPanel({
                  store: store,
                  columns: [                                              --指定列
                             { header: 'name', dataIndex: 'name' },
                             { header: 'sex', dataInex: 'sex' }
                           ],
                  autoHeight: true,
                  renderTo: 'grid',
                  viewConfig: {
                  forceFit: true,
                  enableRowBody: true,
                  getRowClass: function(record, rowIndex, p, ds) {       --主要通过这个函数来渲染行的颜色
                                var cls = 'white-row';
                                switch (record.data.color) {
                                    case '#FBF8BF':
                                        cls = 'yellow-row'
                                        break;
                                    case '#99CC99':
                                        cls = 'green-row'
                                        break;
                                    case '#F5C0C0':
                                        cls = 'red-row'
                                        break;
                                  }
                                  return cls;
                              }
                       }
                });

    });
2.给列设置颜色
function renderMotif(data,cell,record,rowIndex,columnIndex,store){
   var value = record.get('color');
   cell.attr = "style=background-color:" +value;  -- 给列的单元格添加style属性。
   return data;
}
这中方式跟单元格渲染方式一样,都是通过renderer属性来设置。
到这里学习了2种方式获取单元格的值:
(1),record.data['id']
(2) record.get('id');

分享到:
评论

相关推荐

    动态操作表格并进行列渲染(改进)

    这篇博客“动态操作表格并进行列渲染(改进)”可能探讨了如何提高用户体验和数据处理效率的方法。我们将围绕这个主题,深入讨论相关知识点。 首先,动态操作表格意味着表格的内容可以根据用户的交互或者后台数据的...

    canvas 绘制的 vue 表格组件,解决上万行+多列数据渲染问题,集成大部分表格功能.zip

    这个组件可以处理大量的数据行和列,并且能够快速地更新视图,确保流畅的用户体验。 这个组件可能包含了以下关键特性: 1. 数据分页:为了优化性能,组件可能采用了分页策略,只在画布上绘制当前页面的数据,而不是...

    element-ui动态渲染表格.html

    element-ui动态渲染表格

    table表格固定行和列

    然而,当表格数据较多时,滚动浏览可能会导致表头或列宽不易辨识,这时就需要实现“固定行和列”的功能。这个功能使得用户在滚动查看大量数据时,表头和左侧的列始终保持可见,提高用户的阅读体验。 要实现`table...

    layui使用表格渲染获取行数据的例子

    需求:使用前端框架layui生成表格,点击表格中一行数据中的按钮,获取到这行数据。 解决办法: 在render中增加字段: done: function (res, curr, count) { // $('.x-body').find('.layui-table-body').find(table...

    JTable 操作单元格 行 列

    本篇文章将深入探讨`JTable`如何操作单元格、行和列,以帮助你更好地理解和运用这一功能强大的组件。 ### 单元格操作 1. **创建和设置单元格值**:`JTable`中的每个单元格都由一个`DefaultTableModel`管理。你可以...

    JTable颜色渲染代码

    - **行渲染器**:对于整个行的颜色定制,可以通过覆盖`JTable`的`prepareRenderer`方法来实现。这种方式可以根据行的索引或者数据内容来决定行的样式。 综上所述,本文不仅介绍了JTable的基本使用方法,还探讨了...

    flex中渲染器简介

    例如,如果你试图改变列表中第五行的第四列背景色,你需要注意,一旦用户滚动列表,这个渲染器可能会被用来显示其他数据,因为它会被复用。因此,正确的做法是让渲染器根据所显示的数据动态地改变其自身状态。 内联...

    曙光渲染云平台方案

    配置表通常会列出不同类型的硬件组件,如处理器类型、内存容量、存储设备等,以及它们的组合方式,以满足不同渲染任务的性能需求。 2.1.1 配置表 配置表会详细列举出各个硬件组件的具体规格,例如采用何种CPU...

    修改grid行或列颜色

    `getRowClass` 是一个函数,该函数根据传入的记录(`record`)和行索引(`rowIndex`)返回一个CSS类名,用于设置行的样式。具体来说: ```javascript getRowClass: function(record, rowIndex, p, ds) { switch ...

    GridView 冻结列和行

    在实际应用中,有时我们需要在用户滚动页面时保持某些列或行始终可见,这就是所谓的“冻结列和行”功能。这个功能可以帮助用户更好地浏览和理解数据,尤其是在处理大量数据或者需要对比不同列的时候。 GridView ...

    Unity中在安卓平台如何测试渲染所用时间

    - "Frame Timing"面板会列出每帧的各个阶段,如Culling(剔除)、Rendering(渲染)和Post-processing(后期处理)等。观察这些阶段的耗时,找出性能瓶颈。 - 注意"Script Execution Overhead",这是CPU在执行脚本...

    gridview冻结表头和列

    当数据行数过多时,滚动浏览可能会导致表头和部分关键列无法始终可见,影响用户阅读和理解数据。为了解决这个问题,我们可以实现“gridview冻结表头和列”的功能,确保表头和特定列在滚动时始终保持固定。 ...

    用于在vxetable表格中适配antdesignvue组件的渲染

    1. **VxeTable**:VxeTable是一个基于Vue的高性能表格组件,它支持动态列、行操作、表头分组、合并单元格、树形数据、拖拽排序、多级表头、虚拟滚动等复杂功能。通过其灵活的API和自定义渲染函数,开发者可以轻松地...

    VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解

    本篇文章将详细介绍如何实现`el-table`的循环动态列渲染。 首先,ElementUI的`el-table`组件通常通过`&lt;el-table-column&gt;`标签来定义每一列的属性,如`prop`、`label`和`width`等。例如,以下是一个静态的表格列定义...

    java 手动,用代码添加表格的行和列

    - **动态添加行和列**:在网页加载后,通过JavaScript动态地修改DOM(Document Object Model),即文档对象模型,以增加或删除表格的行和列。 ### 实现步骤详解 根据给定的部分内容,我们可以看到使用JavaScript来...

    完美解决bootstraptable父子表子表渲染问题

    BootstrapTable是一款基于Bootstrap框架的前端数据表格插件,它提供了丰富的功能,如排序、过滤、分页、自定义列等。在使用过程中,有时我们可能会遇到一个特定的需求,即实现父子表的功能,也就是在一个表格中嵌套...

    flex 自定义dataGrid渲染器.根据数据变色

    在DataGrid中,我们可以通过设置`itemRenderer`属性来指定特定列使用我们的自定义渲染器。例如: ```xml 数据列" dataField="yourDataField" itemRenderer="utils.MyCustomLabelRenderer"/&gt; ``` 这里的`utils....

    table列排序、列拖动、列宽度变化、行交换

    "table列排序、列拖动、列宽度变化、行交换"这些功能是网页数据展示中常见的需求,能够极大地提升用户操作的便捷性和数据管理的有效性。下面我们将详细探讨这些知识点。 首先,**表头列排序**是一种常见于数据表格...

Global site tag (gtag.js) - Google Analytics