qqqqqqqqqqqqqqq

  

 

===========================================================

 

下面我们扩展一下刚才的示例应用一下EditorGridPanel


 

          // 定义数组
var  arr = [
    [
' Bill ' ' Gardener ' , ' 2007-01-02 ' , - 10 , true ],
    [ 
' Ben ' ' Horticulturalist ' , ' 2007-01-03 ' , - 20.1 , false ],
    [
' ' ' Gardener ' , ' 2007-02-02 ' , 0 , true ],
    [
' ' ' Gardener ' , ' 2007-01-04 ' , 13 , false ],
    [ 
' ' ' Horticulturalist ' , ' 2007-01-05 ' , 15.2 , false ]
    ];
var  reader  =   new  Ext.data.ArrayReader(

   
{} ,
// 定义数组到record的映射关系
   [
    
{name: 'name'} ,         
    
{name: 'occupation', mapping: 1} ,
    
{name:'date',type: 'date',dateFormat: 'Y-m-d'} // 用指定的格式转换日期
     {name:'float',type:'float'} ,
    
{name:'bool',type:'bool'}
   ]
);
// 生成元数据
  var  store = new  Ext.data.Store( {
    reader:reader
    }
);
store.loadData(arr);


// 自定义可编辑列,从ext的示例抄的,但是却要init郁闷
 Ext.grid.CheckColumn  =   function (config) {
    Ext.apply(
this, config);
    
if(!this.id){
    
this.id = Ext.id();
    }

    
this.renderer = this.renderer.createDelegate(this);
}
;
// 重写了三个方法,捕捉mousedown修改数据
Ext.grid.CheckColumn.prototype  = {
init : 
function(grid){
    
this.grid = grid;
    
this.grid.on('render'function(){
    
var view = this.grid.getView();
    view.mainBody.on(
'mousedown'this.onMouseDown, this);
    }
this);
}
,

onMouseDown : 
function(e, t){
    
    
if(t.className && t.className.indexOf('x-grid3-cc-'+this.id) != -1){
    e.stopEvent();
    
var index = this.grid.getView().findRowIndex(t);
    
var record = this.grid.store.getAt(index);
    record.set(
this.dataIndex, !record.data[this.dataIndex]);
    }

}
,

renderer : 
function(v, p, record){
    p.css 
+= ' x-grid3-check-col-td';
    
return '<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'">&#160;</div>';
}

}


// 绑定到bool字段
var  checkColumn = new  Ext.grid.CheckColumn( {
   header: 
"布尔值",
   dataIndex: 
'bool'
}
);


/*
    现在配置列信息,为了本地化日期选择器,请包含ext-lang-zh_CN.js,并修改Date.dayNames = ["日","一","二","三","四","五","六"];
    在Ext.apply(Ext.DatePicker.prototype, {...})中加入okText:"确定",cancelText:"取消";
*/

var  col = new  Ext.grid.ColumnModel([
    
new  Ext.grid.RowNumberer( {header:'序号',width:30} ),
    
{header:'姓名',sortable: true,dataIndex:'name'} ,
    
{header:'职业',sortable: true,dataIndex:'occupation'} ,
    
{   
    id:
'datacol',
    header:
'日期',
    sortable:
true,
    dataIndex:
'date',renderer: Ext.util.Format.dateRenderer('Y年m月d日'),//格式化显示
    editor:new Ext.form.DateField()
     }
,
    
{header:'数值',sortable:true,dataIndex:'float',renderer:formatFloat,align: 'right',editor:new Ext.form.NumberField()} ,   // 自定义显示方式,右对齐
    checkColumn  // 这个"选择框列"看起来的确漂亮些,其实是通过修改背景图片实现的
]);



// 配置视图信息
var  view = new  Ext.grid.GridView( {forceFit:true,sortAscText :'正序', sortDescText :'倒序'} );
view.columnsText
= ' 列显示/隐藏 ' ;

// 现在我们看看可编辑的数据表格能用了吗        
var  grid = new  Ext.grid.EditorGridPanel( {
    el:Ext.getBody(),
    height:
200,
    width:
400,
    store:store,
    cm:col,
    view:view
    }
);    
// 为什么原例不需要init?
checkColumn.init(grid);
grid.render();

function  formatFloat(val) {
    
var bgcolor;
    
if(val>0){
    bgcolor
='#FF0000';
    }
else if(val<0){
    bgcolor
='#00FF00';
    }

    
else{
    bgcolor
='#000000';
    }

    
return( ['<span style="color:',bgcolor,'">',val,'</span>'].join(''));
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真心若骄阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值