EXTJS 4.2 资料 控件之Grid 那些事

最近在学习Extjs4.2 ,积累文章,看得不错,再此留年:

//表格数据最起码有列、数据、转换原始数据这3项
Ext.onReady(function(){
    //定义列
    var columns = [
        {header:‘编号‘,dataIndex:‘id‘,width:50}, //sortable:true 可设置是否为该列进行排序
        {header:‘名称‘,dataIndex:‘name‘,width:80},
        {header:‘描述‘,dataIndex:‘descn‘,width:112},
        {header:‘状态‘,dataIndex:‘status‘,width:80,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 =[
        [‘1‘,‘小王‘,‘描述01‘,‘可用‘],
        [‘2‘,‘李四‘,‘描述02‘,‘禁用‘],
        [‘3‘,‘张三‘,‘描述03‘,‘可用‘],
        [‘4‘,‘束洋洋‘,‘思考者日记网‘,‘可用‘],
        [‘5‘,‘高飞‘,‘描述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:450,
        height:150,
        //selModel:sm,
        store:store, //转换后的数据
        columns:columns, //显示列
        stripeRows:true, //斑马线效果
        //enableColumnMove: false, //禁止拖放列
        //enableColumnResize: false, //禁止改变列宽度
        loadMask:true, //显示遮罩和提示功能,即加载Loading……
        //forceFit:true //自动填满表格
        viewConfig:{
            columnsText:‘显示的列‘,
            scrollOffset:30, //表格右侧为滚动条预留的宽度,默认为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:80, renderer:renderMotif},  

b.function  renderDescn

{header:‘描述‘,dataIndex:‘descn‘,width:112,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;
}  

说明:

我们可以在渲染函数里得到多个参数,如下所示:

  1. value:将要显示到单元格里的值;
  2. cellmeta:单元格的相关属性,主要有id和CSS;
  3. record:这行的数据对象,如果需要获取其他列的值,可以通过record.data["id"]的方式得到,这个属性很重要,我们经常会用到;
  4. rowIndex:行号,这里的行号指的是当前页中所有记录的顺序;
  5. columnIndex:当前列的列号;
  6. store:构造表格时传递的ds。表格里的所有数据都可以通过store获得。

3.自动显示行号和复选框都是renderer的延伸。先来说自动显示行号,在列模型columns中加入RowNumber对象即可,如下代码

new Ext.grid.RowNumberer(), //自动显示行号
时间: 2024-10-24 22:02:32

EXTJS 4.2 资料 控件之Grid 那些事的相关文章

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 4.2 资料 控件之Grid 添加行,编辑行,删除行

//SiteVariableConfigValue类,创立一个模型类 Ext.define("SiteVariableConfigValue", { extend: "Ext.data.Model", fields: [ { name: 'SVCValueId', type: 'int', sortable: true }, { name: 'SVCId', type: 'string', sortable: true }, { name: 'KeyInItem',

EXTJS 4.2 资料 控件之Grid 列鼠标悬停提示

columns: [ { header: '序号', xtype: 'rownumberer', align: 'left', width: 50 }, { header: '货位编号', dataIndex: 'StorePosCode', width: 100 }, { header: '货位名称', dataIndex: 'StorePosName', width: 100, renderer: function (v, ctx, record) { ctx.tdAttr = " data

EXTJS 3.0 资料 控件之 html 潜入label用法

这是在Extjs 中插入html 控件label! html: "<div><label id='howMany'>您共选中了</label><br/></div>"获取label值:document.getElementById('howMany').innerText赋值label值:document.getElementById('howMany').innerText = "这是赋值"; docum

EXTJS 3.0 资料 控件之 combo 用法

EXTJS combo 控件: 1.先定义store //年款 var comboData_ReleasYear = [ ['0', '2010'], ['1', '2011'], ['2', '2013'], ['3', '2014'] ]; 2.定义combo控件 { layout: 'form', labelWidth: 50, width: 260, items: [{ xtype: 'combo', name: 'ReleasYear', allowBlank: false, fiel

EXTJS 4.2 资料 控件之radiogroup 的用法

最近在EXTJS4.2开发项目,radiogroup的用法,主要是和grid之间的编辑功能:看了好多资料都不对,特此在这里备注记录 代码如下, 1.这是一段Win窗体上的两个单选按钮,设置单选按钮都是选择“是” a. { xtype: 'fieldcontainer', layout: 'hbox', defaults: { flex: 1 }, items: [{ xtype: 'radiogroup', fieldLabel: '手机验证', width: 100, items: [ { b

EXTJS 3.0 资料 控件之 Store 用法

最近工作,发现在Extjs中自定义Store的功能挺多,特意在此做笔记,几下来,具体代码如下: 1.定义Store //定义Store var ItemSelectorStore = new Ext.data.ArrayStore({ fields: [ { name: 'BaseInfoId' }, { name: 'Title' } ] }); 2.根据Grid的数据,循环往Store里面插 var rows = grid.getSelectionModel().getSelections(

EXTJS 4.2 资料 控件之checkboxgroup的用法

代码判断 { xtype: 'panel', width: 750, border: false, flex: 1, items: [{ xtype: 'checkboxgroup', id: 'lblOperationBehavior', name: 'lblOperationBehavior', itemCls: 'x-check-group-alt', columns: 4, fieldLabel: '设定权限', labelWidth: 100, width: 750, align: '

EXTJS 3.0 资料 控件之 GridPanel属性与方法大全

1.Ext.grid.GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn:自动充满表格未用空间的列,参数为列id,该id不能为0 stripeRows:表格是否隔行换色,默认为false cm.colModel:表格的列模式,渲染表格时必须设置该配置项 sm.selModel:表格的选择模式,默认为Ext.grid.RowSelectionModel enableHdMenu: