EXTJS 4.2 资料 控件之Grid 那些事
最近在学习Extjs4.2 ,积累文章,看得不错,再此留年:
//表格数据最起码有列、数据、转换原始数据这3项
Ext.onReady(function(){
//定义列
var columns = [
{header:'编号',dataIndex:'id',width:}, //sortable:true 可设置是否为该列进行排序
{header:'名称',dataIndex:'name',width:},
{header:'描述',dataIndex:'descn',width:},
{header:'状态',dataIndex:'status',width:,renderer:function(value){
if(value=='可用'){
return "<span style='color:green;font-weight:bold';>可用</span><img src='images/right.gif' />";
} else {
return "<span style='color:red;font-weight:bold';>禁用</span><img src='images/wrong.gif' />";
}
}}
];
//定义数据
var data =[
['','小王','描述01','可用'],
['','李四','描述02','禁用'],
['','张三','描述03','可用'],
['','束洋洋','思考者日记网','可用'],
['','高飞','描述05','禁用']
];
//转换原始数据为EXT可以显示的数据
var store = new Ext.data.ArrayStore({
data:data,
fields:[
{name:'id'}, //mapping:0 这样的可以指定列显示的位置,0代表第1列,可以随意设置列显示的位置
{name:'name'},
{name:'descn'},
{name:'status'}
]
});
//加载数据
store.load();
//表格控件默认使用RowModel,按住shift或者ctrl键单击鼠标就可以选择多行,如果希望只选择一行,可以使用singleSelect:true
//我发现我在写的时候,不用的情况下,我试了发现默认就是不可多选的
//var sm = new Ext.grid.RowModel({singleSelect:true});
//创建表格
var grid = new Ext.grid.GridPanel({
renderTo:'grid', //渲染位置
width:,
height:,
//selModel:sm,
store:store, //转换后的数据
columns:columns, //显示列
stripeRows:true, //斑马线效果
//enableColumnMove: false, //禁止拖放列
//enableColumnResize: false, //禁止改变列宽度
loadMask:true, //显示遮罩和提示功能,即加载Loading……
//forceFit:true //自动填满表格
viewConfig:{
columnsText:'显示的列',
scrollOffset:, //表格右侧为滚动条预留的宽度,默认为20
sortAscText:'正序',
sortDescText:'倒序',
forceFit:true //表格会自动延展每列的长度,使内容填满整个表格
}
});
});
1.自定义grid的renderer 方法
a.function renderMotif
/改变列颜色自定义renderner方法
function renderMotif(data, cell, record, rowIndex, columnIndex, store){
var value = record.get('name');
cell.style="background-color:"+value;
return data;
}
列中引用:
{header:'名称',dataIndex:'name',width:, renderer:renderMotif},
b.function renderDescn
{header:'描述',dataIndex:'descn',width:,renderer:renderDescn}
//自定义renderner方法
function renderDescn(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;
}
说明:
我们可以在渲染函数里得到多个参数,如下所示:
- value:将要显示到单元格里的值;
- cellmeta:单元格的相关属性,主要有id和CSS;
- record:这行的数据对象,如果需要获取其他列的值,可以通过record.data["id"]的方式得到,这个属性很重要,我们经常会用到;
- rowIndex:行号,这里的行号指的是当前页中所有记录的顺序;
- columnIndex:当前列的列号;
- store:构造表格时传递的ds。表格里的所有数据都可以通过store获得。
3.自动显示行号和复选框都是renderer的延伸。先来说自动显示行号,在列模型columns中加入RowNumber对象即可,如下代码
new Ext.grid.RowNumberer(), //自动显示行号
4.获取选中行数据,有点奇怪不知道为什么,在EXTJS3.0和EXTJS4.0里面写法不一样,两者区别:
EXTJS4.0写法:
var selectedData = grid.getSelectionModel().getSelection()[].data;
alert(selectedData.Id);
EXTJS3.0写法:
var selectedData = grid.getSelectionModel().getSelection();
alert(selectedData[].Id);
EXTJS 4.2 资料 控件之Grid 那些事的更多相关文章
- EXTJS 4.2 资料 控件之Grid 行编辑绑定下拉框,并点一次触发一次事件
主要代码: { header: '属性值', dataIndex: 'PropertyValueName', width: 130, editor: new Ext.form.field.ComboB ...
- EXTJS 4.2 资料 控件之Grid 添加行,编辑行,删除行
//SiteVariableConfigValue类,创立一个模型类 Ext.define("SiteVariableConfigValue", { extend: "E ...
- EXTJS 4.2 资料 控件之Grid Columns 列renderer 绑定事件
columns: [ { header: '序号', xtype: 'rownumberer', align: 'center', width: 100 }, { header: 'CompanyId ...
- EXTJS 4.2 资料 控件之Grid 列鼠标悬停提示
columns: [ { header: }, { header: }, { header: , renderer: function (v, ctx, record) { ctx.tdAttr = ...
- EXTJS 3.0 资料 控件之 html 潜入label用法
这是在Extjs 中插入html 控件label! html: "<div><label id='howMany'>您共选中了</label><br ...
- EXTJS 3.0 资料 控件之 combo 用法
EXTJS combo 控件: 1.先定义store //年款 var comboData_ReleasYear = [ ['], ['], ['], ['] ]; 2.定义combo控件 { lay ...
- EXTJS 4.2 资料 控件之combo 联动
写两个数据源: 1.IM_ST_Module.js { success:true, data:[ { ModuleId: '1', ModuleName: '资讯' } , { ModuleId: ' ...
- EXTJS 4.2 资料 控件textfield中fieldLabel去掉冒号,控件label的长度
代码: labelSeparator: '', // 去掉laebl中的冒号 labelWidth: 10,//控件label的长度
- EXTJS 4.2 资料 控件之radiogroup 的用法
最近在EXTJS4.2开发项目,radiogroup的用法,主要是和grid之间的编辑功能:看了好多资料都不对,特此在这里备注记录 代码如下, 1.这是一段Win窗体上的两个单选按钮,设置单选按钮都是 ...
随机推荐
- Scala中的Map
映射 映射是对偶的集合. 声明映射 映射是对偶的集合. a.声明映射 b.映射中的键值对称作对偶,用( , )表示 c.当映射中不存在key时,取值会报错,解决方案是使用 contains方法,或者g ...
- [改善Java代码]优先选择线程池
在Java1.5之前,实现多线程编程比较麻烦,需要自己启动线程,并关注同步资源,防止线程死锁等问题,在1.5版本之后引入了并行计算框架,大大简化了多线程开发. 我们知道线程有5个状态:新建状态(New ...
- 微信 redirect_uri参数错误 正确的处理
如果您若成功将微信搭建了到自己的服务器中的情况下,进行网页授权时出现如下图 解决方案: 开发->接口权限->找到类目为"网页服务->网页账号" 点击修改,注意,此 ...
- Features for configuring JSON-to-Java mapping
Following on/off features are defined in DeserializationConfig.Feature (Jackson 1.x) or Deserializat ...
- Linux 命令 - curl: transfer a URL
命令格式 curl [options] [URL...] 命令参数 -0, --http1.0 强制使用 HTTP/1.0 发送请求 -A, --user-agent 指定用户代理 -b/--cook ...
- HDOJ2006求奇数的乘积
求奇数的乘积 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- Ubuntu系统中Sogou输入法面板问题解决方案
好消息- Ubuntu Kylin团队与搜狗公司合作开发了“搜狗输入法 for Linux”版本,支持Ubuntu 12.04 和 Ubuntu 14.04操作系统,在Sougou官网就可以下载到,附 ...
- 【Cocos2d入门教程七】三分钟看懂Cocos2d坐标系
无论是搞2d还是3d开发,最需要搞清楚的就是坐标系,这部分混乱的话就没啥搞头了.所以玩cocos2d,一上来就需要先把各种与坐标有关的东西搞清楚. 1.OpenGL坐标系 Cocos2d-x使用的是O ...
- Aliyun OSS SDK 异步分块上传导致应用异常退出
问题描述: 使用Aliyun OSS SDK的BeginUploadPart/EndUploadPart执行异步分块上传操作,程序出现错误并异常退出! 原因分析: Using .NET Framewo ...
- SharePoint Server 2013介绍v2
SharePoint Server 2013介绍v2 http://wenku.baidu.com/link?url=rNYYoDmHcXmqhzOeA1sln5cS2xcnABYycBuz8Z4Oq ...