从本篇开始讲基础控件,ExtJs对所有的UI控件都有它自己的一套封装。本篇要讲到的是ExtJs的按钮。主要包括按钮事件、带分割线、带图标、带菜单的按钮,下拉选项式按钮和按钮组合等。我们先看看效果图:
如下是用到的html:
[html]
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
|
<
h1
>
三种方式实现事件:
h1
>
<
div
id
=
"div1"
class
=
"content"
>
<
ul
>
<
li
id
=
"li1"
>
li
>
<
li
id
=
"li2"
>
li
>
<
li
id
=
"li3"
>
li
>
ul
>
div
>
<
h1
>
带图标菜单:
h1
>
<
div
id
=
"div2"
class
=
"content"
>
div
>
<
h1
>
带分割线的按钮
h1
>
<
div
id
=
"div3"
class
=
"content"
>
div
>
<
h1
>
菜单式按钮
h1
>
<
div
id
=
"div4"
class
=
"content"
>
div
>
<
h1
>
按钮组合
h1
>
<
div
id
=
"div5"
class
=
"content"
>
div
>
|
这里介绍了最基本的按钮生成代码,第一个按钮具备弹起和按下两种状态,三个按钮分别别设置成三种大小。每个按钮的单击事件都是通过一种新的实现方式。下面看看Js代码:
[Js]
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
|
Ext.create(
"Ext.Button"
, {
renderTo: Ext.get(
"li1"
),
text:
"事件实现1"
,
allowDepress:
true
,
//是否允许按钮被按下的状态
enableToggle:
true
,
//是否允许按钮在弹起和按下两种状态中切换
handler:
function
() {
Ext.Msg.alert(
"提示"
,
"第一个事件"
);
},
id:
"bt1"
});
Ext.create(
"Ext.Button"
, {
renderTo: Ext.get(
"li2"
),
text:
"事件实现2"
,
listeners: {
"click"
:
function
() {
Ext.Msg.alert(
"提示"
,
"第二个事件"
);
}
},
id:
"bt2"
,
scale:
'medium'
});
var
bt3 = Ext.create(
"Ext.Button"
, {
renderTo: Ext.get(
"li3"
).dom,
text:
"事件实现3"
,
id:
"bt3"
,
scale:
'large'
});
bt3.on(
"click"
,
function
() {
Ext.Msg.alert(
"提示"
,
"第三个事件"
);
});
|
按钮可以带图标和菜单,我们可以在配置项里面配置:
[Js]
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
|
Ext.create(
"Ext.Button"
, {
renderTo: Ext.get(
"div2"
),
id:
"bt4"
,
text:
"带菜单带图标"
,
iconCls:
"add16"
,
menu:
{
items: [
{
text:
'选项1'
}, {
text:
'选项2'
}, {
text:
'选项3'
,
handler:
function
() {
Ext.Msg.alert(
"提示"
,
"来自菜单的消息"
);
}
}
]
}
}).showMenu();
Ext.create(
"Ext.Button"
, {
renderTo: Ext.get(
"div2"
),
id:
"bt5"
,
text:
"上图标下菜单"
,
iconCls:
"add16"
,
iconAlign:
'top'
,
menu:
{
items: [
{
text:
'选项1'
}, {
text:
'选项2'
}, {
text:
'选项3'
,
handler:
function
() {
Ext.Msg.alert(
"提示"
,
"来自菜单的消息"
);
}
}
]
},
arrowAlign:
'bottom'
});
|
注意的地方:分割线的按钮来自于类Ext.SplitButton
[Js]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Ext.create(
"Ext.button.Split"
, {
renderTo: Ext.get(
"div3"
),
text:
"右图标下菜单"
,
iconCls:
"add16"
,
iconAlign:
'right'
,
menu:
{
items: [
{
text:
'选项1'
}, {
text:
'选项2'
}, {
text:
'选项3'
,
handler:
function
() {
Ext.Msg.alert(
"提示"
,
"来自菜单的消息"
);
}
}
]
},
arrowAlign:
'bottom'
});
|
按钮式菜单Ext.CycleButton与下拉不同的是,它具备选中状态,当选中下拉项时,选中文本会相应变化。
[Js]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Ext.create(
'Ext.button.Cycle'
, {
renderTo: Ext.get(
"div4"
),
showText:
true
,
prependText:
'请选择:'
,
menu:
{
items: [{
text:
'选项1'
,
checked:
true
}, {
text:
'选项2'
}, {
text:
'选项3'
}]
},
changeHandler:
function
(btn, item) {
Ext.Msg.alert(
'修改选择'
, item.text);
}
});
|
定义了一组按钮,并可以控制按钮排版。
[Js]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
Ext.create(
"Ext.ButtonGroup"
,{
renderTo: Ext.get(
"div5"
),
title:
"按钮组合"
,
columns: 3,
//defaultType:'splitbutton',
items: [{
text:
'按钮1'
,
iconCls:
'add16'
,
scale:
'large'
,
rowspan: 2
}, {
text:
'按钮2'
, iconCls:
'add16'
, rowspan: 2, scale:
'large'
}, {
text:
'按钮3'
, iconCls:
'add16'
}, {
xtype:
'splitbutton'
, text:
'分割线按钮'
, iconCls:
'add16'
, menu: [{ text:
'菜单1'
}]
}]
});
|