做一个可编辑的,可checked的treegrid,代码相当简洁:
请看代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ZCH</title>
<!-- extjs 样式 -->
<link rel="stylesheet" type="text/css" href="../ext4_2_0/resources/css/ext-all.css"/>
<!-- extjs 引入文件 -->
<script type="text/javascript" src="../ext4_2_0/ext-all.js"></script>
<script type="text/javascript" src="../ext4_2_0/locale/ext-lang-zh_CN.js"></script> <script>
Ext.define('treeGridModel', {
extend: 'Ext.data.Model',
fields: [{
name: 'title',
type: 'string'
}, {
name: 'min',
type: 'int'
}, {
name: 'max',
type: 'int'
}]
}); Ext.define('checkTreeGrid', {
extend: 'Ext.tree.Panel', requires: [
'Ext.data.*',
'Ext.grid.*',
'Ext.tree.*',
'Ext.ux.CheckColumn'
],
xtype: 'tree-grid', title: 'checkedTreeEditGrid',
useArrows: true,
rootVisible: false,
multiSelect: true,
//singleExpand: true, initComponent: function() {
this.width = 600;
this.cellEditing = new Ext.grid.plugin.CellEditing({
clicksToEdit: 1
});
var me = this;
Ext.apply(this, {
store: new Ext.data.TreeStore({
model: treeGridModel,
proxy: {
type: 'ajax',
url: './checktreegrid.json'
},
folderSort: true
}),
plugins: [me.cellEditing],
selType: 'cellmodel', //设置为单元格选择模式
columns: [{
xtype: 'treecolumn', //this is so we know which column will show the tree
text: '可用资源',
flex: 2,
sortable: true,
dataIndex: 'title'
},{
text: '最小值',
flex: 1,
dataIndex: 'min',
sortable: true,
field:{
xtype: 'textfield'
}
},{
text: '最大值',
flex: 1,
dataIndex: 'max',
sortable: true,
field:{
xtype: 'textfield'
}
}], listeners:{
checkchange : function(node, checked) {
if (checked == true) {
node.checked = checked;
// console.dir(node.parentNode);
//alert(node.get("leaf"));
//获得父节点
pNode = node.parentNode;
//当checked == true通过循环将所有父节点选中
for (; pNode != null; pNode = pNode.parentNode) {
pNode.set("checked", true);
}
}
//当该节点有子节点时,将所有子节点选中删除
if (!node.get("leaf") && !checked){
node.cascadeBy(function(node){
node.set('checked', false);
});
}
}
} });
this.callParent();
}
}); Ext.onReady(function(){
var tree = Ext.create('checkTreeGrid', {
renderTo:'example-grid'
});
}); </script>
</head> <body>
<div id="example-grid"></div>
</body>
</html>