实例显示了一个简单的带复选框的的树,通过返回的JSON数据来显示复选框是否是选中/不选中状态。例子中没有采用异步的方式展开节点。如果想使用异步方式加载节点,可以参考本站另一片文章来实现此功能,链接地址为:www.mhzg.net/a/20112/2011222109040.html
效果图
js代码:
- Ext.require([
-
'Ext.tree.*',
-
'Ext.data.*',
-
'Ext.window.MessageBox'
- ]);
-
-
Ext.onReady(function(){
-
varstore=Ext.create('Ext.data.TreeStore',{
- proxy:{
-
type:'ajax',
-
url:'check-nodes.json'
- },
- sorters:[{
-
property:'leaf',
-
direction:'ASC'
- },{
-
property:'text',
-
direction:'ASC'
- }]
- });
-
-
vartree=Ext.create('Ext.tree.Panel',{
- store:store,
-
rootVisible:false,
-
useArrows:true,
-
frame:true,
-
title:'CheckTree',
-
renderTo:'tree-div',
- width:289,
- height:220,
- dockedItems:[{
-
xtype:'toolbar',
- items:{
-
text:'Getcheckednodes',
-
handler:function(){
-
varrecords=tree.getView().getChecked(),
- names=[];
-
-
Ext.Array.each(records,function(rec){
-
names.push(rec.get('text'));
- });
-
- Ext.MessageBox.show({
-
title:'SelectedNodes',
-
msg:names.join('<br/>'),
- icon:Ext.MessageBox.INFO
- });
- }
- }
- }]
- });
- });
HTML代码:
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
- <html>
- <head>
-
<metahttp-equiv="Content-Type"content="text/html;charset=iso-8859-1">
- <title>TreeExample</title>
-
<linkrel="stylesheet"type="text/css"href="../../resources/css/ext-all.css"/>
-
<linkrel="stylesheet"type="text/css"href="../shared/example.css"/>
-
-
<scripttype="text/javascript"src="../../bootstrap.js"></script>
-
<scripttype="text/javascript"src="check-tree.js"></script>
-
- <style>
- .x-tree-checked{
- text-decoration:line-through;
- color:#777;
- }
- .x-grid-row-selected.x-grid-cell{
- background-color:#efefef!important;
- }
- </style>
- </head>
- <body>
-
<divid="tree-div"></div>
- </body>
- </html>
JSON:
- [{
-
"text":"ToDo",
-
"cls":"folder",
-
"expanded":true,
-
"children":[{
-
"text":"Gojogging",
-
"leaf":true,
-
"checked":true
- },{
-
"text":"Takeanap",
-
"leaf":true,
-
"checked":false
- },{
-
"text":"ClimbEverest",
-
"leaf":true,
-
"checked":false
- }]
- },{
-
"text":"GroceryList",
-
"cls":"folder",
-
"children":[{
-
"text":"Bananas",
-
"leaf":true,
-
"checked":false
- },{
-
"text":"Milk",
-
"leaf":true,
-
"checked":false
- },{
-
"text":"Cereal",
-
"leaf":true,
-
"checked":false
- },{
-
"text":"Energyfoods",
-
"cls":"folder",
-
"children":[{
-
"text":"Coffee",
-
"leaf":true,
-
"checked":false
- },{
-
"text":"RedBull",
-
"leaf":true,
-
"checked":false
- }]
- }]
- },{
-
"text":"RemodelProject",
-
"cls":"folder",
-
"children":[{
-
"text":"Finishthebudget",
-
"leaf":true,
-
"checked":false
- },{
-
"text":"Callcontractors",
-
"leaf":true,
-
"checked":false
- },{
-
"text":"Choosedesign",
-
"leaf":true,
-
"checked":false
- }]
- }]
OK。。实例中,当我们选择了某个节点的复选框,点击 Get checked nodes 按钮,我们可以得到此节点的text值,本例当点击Get checked nodes按钮,弹出的对话框会显示Go jogging。可我们在实际操作中,显示的文本并不能满足我们的需求,一般来说,我们需要获取此节点的ID值,然后传到服务端,进行操作。下面改造下我们的JS代码:
- Ext.require([
-
'Ext.tree.*',
-
'Ext.data.*',
-
'Ext.window.MessageBox'
- ]);
-
-
Ext.onReady(function(){
-
varstore=Ext.create('Ext.data.TreeStore',{
- proxy:{
-
type:'ajax',
-
url:'check-nodes.json'
- },
- sorters:[{
-
property:'leaf',
-
direction:'ASC'
- },{
-
property:'text',
-
direction:'ASC'
- }]
- });
-
-
vartree=Ext.create('Ext.tree.Panel',{
- store:store,
-
rootVisible:false,
-
useArrows:true,
-
frame:true,
-
title:'CheckTree',
-
renderTo:'tree-div',
- width:289,
- height:220,
- dockedItems:[{
-
xtype:'toolbar',
- items:{
-
text:'Getcheckednodes',
-
handler:function(){
-
varrecords=tree.getView().getChecked(),
- names=[];
-
- ids=[];
-
-
Ext.Array.each(records,function(rec){
-
names.push(rec.get('text'));
-
-
ids.push(rec.get('id'));
- });
-
- Ext.MessageBox.show({
-
title:'SelectedNodes',
-
msg:names.join('<br/>')+ids.join('<br/>'),
- icon:Ext.MessageBox.INFO
- });
- }
- }
- }]
- });
- });
例子中我们增加了一个数组ids,并在循环中将被选中的节点压入ids中,最后在对话框中显示选中节点的text值和id值。在尝试之前,我们还需要将我们的JSON数据做下调整。调整后的JSON数据如下:
- [{
-
"text":"ToDo",
-
"cls":"folder",
-
"expanded":true,
-
"children":[{
-
"text":"Gojogging",
-
"id":"3",
-
"leaf":true,
-
"checked":true
- },{
-
"text":"Takeanap",
-
"leaf":true,
-
"id":"4",
-
"checked":false
- },{
-
"text":"ClimbEverest",
-
"leaf":true,
-
"id":"5",
-
"checked":false
- }]
- },{
-
"text":"GroceryList",
-
"cls":"folder",
-
"children":[{
-
"text":"Bananas",
-
"leaf":true,
-
"id":"8",
-
"checked":false
- },{
-
"text":"Milk",
-
"leaf":true,
-
"id":"10",
-
"checked":false
- },{
-
"text":"Cereal",
-
"leaf":true,
-
"id":"15",
-
"checked":false
- },{
-
"text":"Energyfoods",
-
"cls":"folder",
-
"children":[{
-
"text":"Coffee",
-
"leaf":true,
-
"id":"52",
-
"checked":false
- },{
-
"text":"RedBull",
-
"leaf":true,
-
"id":"13",
-
"checked":false
- }]
- }]
- },{
-
"text":"RemodelProject",
-
"cls":"folder",
-
"children":[{
-
"text":"Finishthebudget",
-
"leaf":true,
-
"id":"34",
-
"checked":false
- },{
-
"text":"Callcontractors",
-
"leaf":true,
-
"id":"103",
-
"checked":false
- },{
-
"text":"Choosedesign",
-
"leaf":true,
-
"id":"6",
-
"checked":false
- }]
- }]
是的,在JSON数据中,要返回id的值,这样才能确保代码可以获取正确的值。
分享到:
相关推荐
分享一个ExtJs Tree, 完整的带有复选框的树形结构
ExtJS4学习笔记(七)---带搜索的Grid(SearchGrid) ExtJS4学习笔记(八)---Grid多选/全选 ExtJS4学习笔记(九)---ExtJS4 EditGrid(可编辑的Grid) ExtJS4学习笔记(十)---ExtJS4图片验证码的实现
ExtJs4 Checkbox tree
Extjs4 带复选框的树(Checkbox tree) Extjs4 新的布局方式 Extjs4 锁定表头(Locking Grid)功能 Extjs4.0 MVC实例 Extjs4.0动态填充combobox数据 Extjs4中up()和down()的用法 ExtJS4学习笔记(一)---window的创建 ...
基于EXTjs 的 动态复选框树 json数据交互
extjs带复选框的树包括全选 反选 子选父以及 父选子 与adf在jsp页面得应用 包含了工具类以及针对extjs树节点增加、删除、修改的工具方法
checkbox tree extjs2checkbox tree extjs2checkbox tree extjs2checkbox tree extjs2
1. ExtJs 结构树 2 2. 对ExtJs的态度 3 3. Ext.form概述 4 4. Ext.TabPanel篇 5 5. Function扩展篇 7 6. Ext.data.Store篇 10 7. Ext.data.JsonReader篇一 12 8. Ext.data.JsonReader篇二 15 9. Ext.data.HttpProxy...
extjs3.2 3.3 3.4都测试过可以使用,带有复选框的树菜单,选中父节点子节点全部选中,选中子节点父节点选中(以及父节点的父节点等),其余版本不知道能否使用
extjs-theme-bootstrap-master.zip
网上搜索了许久未找到...Extjs4.2 带复选框的下拉树,解决了向下勾选子节点、向上勾选父节点,正选反选获取值等问题,勾选的节点显示displayfield值直接显示在下拉文本框中。需要引用ext-all.js和ext-all-neptune.css
Extjs 5 学习笔记,在网上下载整理好的。
NULL 博文链接:https://lucky16.iteye.com/blog/1490278
extjs4.1下拉复选框完整DEMO,包含了extjs4.1主文件,代码实现了动态加载功能,所以需要配置IIS或者apache。插件文件在ux目录下,请自行参考。
ExtJs学习笔记,共30讲 1. ExtJs 结构树 2 2. 对ExtJs的态度 3 3. Ext.form概述 4 4. Ext.TabPanel篇 5 5. Function扩展篇 7 6. Ext.data.Store篇 10 7. Ext.data.JsonReader篇一 12 8. Ext.data.JsonReader篇二 15 ...
此扩展解决 extjs2.2 及以前版本都不支持checkbox的问题
语言程序设计资料:ExtJs学习笔记-2积分.doc
extjs2----关于extjs 的使用,操作.比较初级,但是也比较使用。适合初步接触extjs的朋友
1、解压,进入extjs4.2.1\examples\form,浏览器打开 hbox-form.html 文件,当我勾选中任意一个多选下拉框,然后再勾选‘ALL’时,‘ALL’却是不被选中的状态,且...extjs4.2.1\examples\form\MultipleComboBox.js