JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
表格GridPanel概述
ExtJS中的表格功能非常强大,包括了排序、缓存、拖动、隐藏某一列、自动显示行号、列汇总、单元格编辑等实用功能。
表格由类Ext.grid.GridPanel定义,继承自Panel,其xtype为grid。ExtJS中,表格Grid必须包含列定义信息,并指定表格的数据存储器Store。表格的列信息由类Ext.grid.Column(以前是由Ext.grid.ColumnModel定义)、而表格的数据存储器由Ext.data.Store定义,数据存储器根据解析的数据不同分为JsonStore、SimpleStroe、GroupingStore等。
下面通过一段代码给大家介绍senchagridpanel编辑单元,具体代码如下所示:
{
xtype:'gridpanel',
region:'north',
height:150,
title:'MyGridPanel',
store:'A_Test_Store',
columns:[
{
xtype:'gridcolumn',
dataIndex:'Name',
text:'Name',
editor:{
xtype:'textfield'
}
},
{
xtype:'gridcolumn',
dataIndex:'Content',
text:'Content'
},
{
xtype:'gridcolumn',
dataIndex:'Time',
text:'Time'
}
],
plugins:[
Ext.create('Ext.grid.plugin.CellEditing',{
clicksToEdit:1,//点击单元格编辑
listeners:{
beforeedit:{
fn:me.onCellEditingBeforeEdit,
scope:me
},
validateedit:{
fn:me.onCellEditingValidateedit,
scope:me
}
}
})
]
}
onCellEditingBeforeEdit:function(editor,e,eOpts){//动态赋值用.正常情况下不需要该事件.
e.record.data[e.field]="mytest";
e.value="mytest";
e.record.commit();//提交,不提交无效
}
onCellEditingValidateedit:function(editor,e,eOpts){
if(e.row==1)//验证逻辑
{
e.cancel=true;//取消
e.record.data[e.field]=e.value;
}
e.record.commit();
}
下面一段代码是关于senchagridpanel改变单元格颜色
标题列包含审核通过则绿色,包含拒绝为红色:
{
xtype:'gridcolumn',
renderer:function(value,metaData,record,rowIndex,colIndex,store,view){
metaData.tdAttr='data-qtip="'+record.data.Content+'"';
if(record.data.Content.indexOf('审核通过')!=-1)
{
metaData.style="color:green";
}
elseif(record.data.Content.indexOf('拒绝')!=-1)
{
metaData.style="color:red";
}
returnvalue;
}
,
width:'*',
dataIndex:'Title',
text:'标题'
}