ExtJs renderer

extjs grid renderer用法

今天在做项目时,需要在列表中的某列添加一个超链接,首先要取得当前选中行的数据,判断数据类型,然后链接到不同的页面,研究下。发现ExtJs提供了一个很强的方法如下:

var cm = new Ext.grid.ColumnModel(
[
new Ext.grid.RowNumberer({ header: "", width: 20, align: ‘center‘ }),
{ header: ‘‘, align: ‘center‘, dataIndex: ‘AccountAndRoseID‘, width: 50, sortable: true, hidden: true },
{ header: ‘‘, align: ‘center‘, dataIndex: ‘UserAccountId‘, width: 50, sortable: true, hidden: true },
{ header: ‘帐号‘, align: ‘center‘, dataIndex: ‘UserAccountName‘, width: 200, sortable: true },
{ header: ‘角色名‘, align: ‘center‘, dataIndex: ‘UserRoleName‘, width: 200, sortable: true },
{
header: ‘状态‘, align: ‘center‘, dataIndex: ‘UserAccountStateId‘, width:
200, sortable: true, hidden: true, renderer: function() }
]

renderer可以格式化该列显示的数据格式或者按照你自定义的脚本显示最终数据样子(我目前是这么理解的)
先看下renderer: function()里的参数

renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){

}
1.value是当前单元格的值
2.cellmeta里保存的是cellId单元格id,id不知道是干啥的,似乎是列号,css是这个单元格的css样式。
3.record是这行的所有数据,你想要什么,record.data["id"]这样就获得了。
4.rowIndex是行号,不是从头往下数的意思,而是计算了分页以后的结果。
5.columnIndex列号太简单了。
6.store,这个厉害,实际上这个是你构造表格时候传递的ds,也就是说表格里所有的数据,你都可以随便调用,唉,太厉害了。

网上找到一篇博文,非常不错,直观明了:

<html>
<head>
<meta http-equiv="Content-Type" c>
<title>03.grid</title>
<link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/../resources/css/ext-all.css" />
<script type="text/javascript" src="http://www.cnblogs.com/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="http://www.cnblogs.com/ext-all.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
/*
var cm = new Ext.grid.ColumnModel([
{header:‘编号‘,dataIndex:‘id‘},
{header:‘性别‘,dataIndex:‘sex‘,renderer:function(value){
if (value == ‘male‘) {
return "<span style=‘color:red;font-weight:bold;‘>红男</span>";
} else {
return "<span style=‘color:green;font-weight:bold;‘>绿女</span>";
}
}},
{header:‘名称‘,dataIndex:‘name‘},
{header:‘描述‘,dataIndex:‘descn‘}
]);
*/
function renderSex(value) {
if (value == ‘male‘) {
return "<span style=‘color:red;font-weight:bold;‘>红男</span><img src=‘user_male.png‘ />";
} else {
return "<span style=‘color:green;font-weight:bold;‘>绿女</span><img src=‘user_female.png‘ />";
}
}

function renderDescn(value, cellmeta, record, rowIndex, columnIndex, store) {
var str = "<input type=‘button‘ value=‘查看详细信息‘ >";
return str;
}

var cm = new Ext.grid.ColumnModel([
{header:‘编号‘,dataIndex:‘id‘},
{header:‘性别‘,dataIndex:‘sex‘,renderer:renderSex},
{header:‘名称‘,dataIndex:‘name‘},
{header:‘描述‘,dataIndex:‘descn‘,renderer:renderDescn}
]);

var data = [
[‘1‘,‘male‘,‘name1‘,‘descn1‘],
[‘2‘,‘female‘,‘name2‘,‘descn2‘],
[‘3‘,‘male‘,‘name3‘,‘descn3‘],
[‘4‘,‘female‘,‘name4‘,‘descn4‘],
[‘5‘,‘male‘,‘name5‘,‘descn5‘]
];

var store = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: ‘id‘},
{name: ‘sex‘},
{name: ‘name‘},
{name: ‘descn‘}
])
});
store.load();

var grid = new Ext.grid.GridPanel({
autoHeight: true,
renderTo: ‘grid‘,
store: store,
cm: cm
});

});
</script>
</head>
<body>
<script type="text/javascript" src="../examples.js"></script>
<div id="grid"></div>
</body>
</html>

时间: 2024-10-27 12:10:53

ExtJs renderer的相关文章

ExtJS renderer(转)

http://www.cnblogs.com/hanyun/archive/2012/04/17/2453438.html var cm = new Ext.grid.ColumnModel(            [            new Ext.grid.RowNumberer({ header: "", width: 20, align: 'center' }),            { header: '', align: 'center', dataIndex: '

【ExtJs】表格控件Grid的增删改查,利用renderer让操作列actioncolumn使用文字而不是图标

在<[ExtJs]与后台数据库交互的带分页表格组件grid的查询>(点击打开链接)中介绍了Grid控件是怎么分页显示的.再加上对此控件内的数据的增加.删除.修改,就真的是大功告成了.此控件的排序,应该在后台的数据库查询语句中增加一条order by语句即可,前台的排序在分页之后,仅能对当前页进行排序,没有什么意义.下面举一个例子来说明,如果对ExtJs的表格控件Grid进行增删改查 一.基本目标 还是在数据库中有一张user表: 然后在网页中,如下图所示,通过增加.编辑.删除按钮能为这个表格控

extjs grid renderer用法

extjs grid renderer用法 摘自:http://www.cnblogs.com/ljian/archive/2011/10/27/2226959.html var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer({ header: "", width: 20, align: 'center' }),{ header: '', align: 'center', dataIndex: 'AccountAndRo

ExtJS:GridPanel之renderer:function()和itemdblclick : function()方法参数详解

要使用GridPanel,首先要定义Store,而在创建Store的时候必须要有Model,因此我们首先来定义Model: Ext.define("Gpsdata", { extend: "Ext.data.Model", fields: [ { name: 'gpstime', type: 'string' }, { name: 'gpstemp', type: 'string' } ] }); 然后创建Store: var surfacestore = new

extjs之renderer

renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){    //TODO}1.value是当前单元格的值2.cellmeta里保存的是cellId单元格id,id不知道是干啥的,似乎是列号,css是这个单元格的css样式.3.record是这行的所有数据,你想要什么,record.data["id"]这样就获得了.4.rowIndex是行号,不是从头往下数的意思,而是计算了分页以后的结果.5.

EXTJS 4.2 资料 控件之Grid Columns 列renderer 绑定事件

columns: [ { header: '序号', xtype: 'rownumberer', align: 'center', width: 100 }, { header: 'CompanyId', dataIndex: 'CompanyId', width: 100, hidden: true }, { header: '商家名称', dataIndex: 'CompanyName', width: 200 }, { header: '商家英文名称', dataIndex: 'Compa

extjs grid renderer参数用法

今天在导出EXT的二维时老是报错,追进去看是renderer : function(value)的参数不对,经过一番研究,未免以后遇到再次浪费时间,记录一下. var cm = new Ext.grid.ColumnModel( [ new Ext.grid.RowNumberer({ header: "", width: 20, align: 'center' }), { header: '', align: 'center', dataIndex: 'AccountAndRoseI

Extjs 中column的renderer使用方法

renderer: function(value, cellmeta, record, rowIndex, columnIndex, store) { if (record.get('productTypeId') == "03") { return record.get('currentAnnualYield'); } else { return value; } }

Extjs之RowNumberer

Ext.grid.RowNumberer,Ext.grid.PageRowNumberer 在一个数据表格中,一般都会加一个行号,在ExtJs中,要实现行号这一效果,只需要一句代码: new Ext.grid.RowNumberer() 举个例子,代码如下: var colModel = new Ext.grid.ColumnModel ( [ new Ext.grid.RowNumberer(), { header: "擦写机器号", width: 100, dataIndex: '