如何软件和系统都会对输入的数据类型进行限制。Ext提供了多种数据类型的组件,比如NumberField限制只能输入数字,ComboBox限制只能输入备选项,DateField限制只能选择日期,CheckBox则限制从true和false中选择其一,等等。
效果:
选择列:
日期列:
判断列:
现在我们来修改之前的数据,让数据类型变得更丰富,如下面的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
Ext.onReady( function (){
var comboData=[
[ '0' , '新版ext教程' ],
[ '1' , 'ext在线支持' ],
[ '2' , 'ext扩展' ]
];
var columns = [{
header: '数字列' ,
dataIndex: 'number' ,
editor: new Ext.form.NumberField({
allowBlank: false ,
allowNegative: false ,
maxValue: 10
})
},{
header: '选择列' ,
dataIndex: 'combo' ,
editor: new Ext.form.ComboBox({
store: new Ext.data.SimpleStore({
fields:[ 'value' , 'text' ],
data: comboData
}),
emptyText: '请选择' ,
mode: 'local' ,
triggerAction: 'all' ,
valueField: 'value' ,
displayField: 'text' ,
editable: false
}),
renderer: function (value){
return comboData[value][1];
}
},{
header: '日期列' ,
dataIndex: 'date' ,
editor: new Ext.form.DateField({
format: 'Y-m-d' ,
minValue: '2007-12-14' ,
disabledDays: [0, 6],
disabledDaysText: '只能选择工作日'
}),
renderer: function (value) {
return Ext.Date.format(value, "Y-m-d" );
}
},{
header: '判断列' ,
dataIndex: 'check' ,
editor: new Ext.form.Checkbox({
allowBlank: false
}),
renderer: function (value) {
return value ? '是' : '否' ;
}
}];
// 放到grid里显示的原始数据
var data = [
[1.1,1, new Date(), true ],
[2.2,2, new Date(), false ],
[3.3,0, new Date(), true ],
[4.4,1, new Date(), false ],
[5.5,2, new Date(), true ]
];
var store = new Ext.data.ArrayStore({
data: data,
fields: [
{name: 'number' },
{name: 'combo' },
{name: 'date' },
{name: 'check' }
]
});
store.load();
var grid = new Ext.grid.GridPanel({
autoHeight: true ,
renderTo: 'grid' ,
store: store,
columns: columns,
selType: 'cellmodel' ,
plugins: [
Ext.create( 'Ext.grid.plugin.CellEditing' , {
clicksToEdit: 1
})
]
});
}); |
大家仔细研究一下渲染函数renderer。经常有人会遇到EditorGrid里的ComboBox无法正常显示数据的情况,其实,这是因为少了这个renderer函数。当没写这个函数时,显示的数据是value值,而不是text。毕竟Editor里的编辑器只在实际编辑时起作用,表格与editor质检共享的是数据,显示层都要依靠各自的实现。不够这样做更灵活,不需要两者都使用一样的显示方式。
本文转自shyy8712872 51CTO博客,原文链接:http://blog.51cto.com/shuyangyang/1334068,如需转载请自行联系原作者