Extjs combox的详解
写了哈extjs当中的combox,第一次写,照着网上的例子抄.在上次的例子中,是实现了,可是有一个重大的错误.也就是自己根本没有理解combox从远程服务器获取数据,和本地获取数据有什么不同...所以上次的例子中,运行起来好久得不到数据...
本地获取数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
Ext.onReady(
function
() {
var
store =
new
Ext.data.Store({
proxy:
new
Ext.data.HttpProxy({ url:
"./Admin/Data/ComBoxData.ashx"
}),
reader:
new
Ext.data.JsonReader({ totalProperty:
"totalProperty"
, root:
"result"
, fields: [{ name:
'Id'
}, { name:
'Text'
}] })
});
store.load();
var
cb =
new
Ext.form.ComboBox({
id:
"cbText"
,
store: store,
loadingText:
'loading...'
,
emptyText:
"--请选择--"
,
triggerAction:
"all"
,
//请设置为"all",否则默认为"query"的情况下,你选择某个值后,再此下拉时,只出现匹配选项,如果设为"all"的话,每次下拉均显示全部选项
mode:
"local"
,
valueField:
"Id"
,
displayField:
"Text"
,
selectOnFocus:
true
,
resizable:
true
,
//可以改变大小
typeAhead:
true
,
//延时查询
typeAheadDelay:
3000
,
editable:
true
,
//可以编辑
renderTo: document.body
});
});
|
在上述代码中,mode:"local",这个过程就是..先从服务器端获取json数据保存到store对象中,然后再加载到comboBox当中...
第二种远程获取数据:
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
|
Ext.onReady(
function
() {
var
store =
new
Ext.data.Store({
proxy:
new
Ext.data.HttpProxy({ url:
"./Admin/Data/ComBoxData.ashx"
}),
reader:
new
Ext.data.JsonReader({ totalProperty:
"totalProperty"
, root:
"result"
, fields: [{ name:
'Id'
}, { name:
'Text'
}] })
});
Ext.data.Record.create([
{ name:
'Id'
, mapping:
'Id'
},
{ name:
'Text'
, mapping:
'Text'
}
]);
var
cb =
new
Ext.form.ComboBox({
id:
"cbText"
,
store: store,
loadingText:
'loading...'
,
emptyText:
"--请选择--"
,
triggerAction:
"all"
,
//请设置为"all",否则默认为"query"的情况下,你选择某个值后,再此下拉时,只出现匹配选项,如果设为"all"的话,每次下拉均显示全部选项
mode:
"remote"
,
valueField:
"Id"
,
displayField:
"Text"
,
selectOnFocus:
true
,
resizable:
true
,
//可以改变大小
//typeAhead: true, //延时查询
//typeAheadDelay:3000,
editable:
true
,
//可以编辑
renderTo: document.body
});
});
|
这时候,我们要一定要理解ext.data中的record对象和store对象,API中翻译的描述:Store类封装了一个客户端的Record对象的缓存.而load事件是当一笔新的Record加载完毕后触发。Record类不但封装了Record的相关定义信息,还封装了Ext.data.Store里面所使用的Recrod对象的值信息, 并且方便任何透过Ext.data.Store来访问Records缓存之信息的代码。(可选的) 如果使用的是Ext.data.Reader,这是一个Reader能够获取数据对象的数组值创建到Record对象下面的对应的映射项; 如果使用的是Ext.data.JsonReader,那么这是一个javascript表达式的字符串, 能够获取数据的引用到Record对象的下面;
个人理解..