怎样获取pdf里面的modelextjs tree model的数据

决策树方法在药物选择模型中的应用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
决策树方法在药物选择模型中的应用
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
你可能喜欢DefaultTreeModel (Java 2 Platform SE 6)
JavaTM&2&PlatformStandard&Ed. 6
javax.swing.tree
类 DefaultTreeModel
javax.swing.tree.DefaultTreeModel
所有已实现的接口: ,
public class DefaultTreeModelextends implements ,
使用 TreeNodes 的简单树数据模型。有关使用 DefaultTreeModel 的更多信息和示例,请参阅 The Java Tutorial 中的 。
警告:此类的序列化对象将与以后的 Swing 版本不兼容。当前的序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 。
protected &boolean
&&&&&&&&&&确定 isLeaf 方法如何判断一个节点是否为叶节点。
protected &
&&&&&&&&&&侦听器。
protected &
&&&&&&&&&&树的根。
&&&&&&&&&&创建其中任何节点都可以有子节点的树。
boolean&asksAllowsChildren)
&&&&&&&&&&创建一棵树,指定某个节点是否可以有子节点,或者是否仅某些节点可以有子节点。
&&&&&&&&&&为树更改后发布的 TreeModelEvent 添加侦听器。
&&&&&&&&&&告知如何确定叶节点。
protected &void
int[]&childIndices,
[]&children)
&&&&&&&&&&通知所有需要此事件类型的通知的已注册侦听器。
protected &void
int[]&childIndices,
[]&children)
&&&&&&&&&&通知所有需要此事件类型的通知的已注册侦听器。
protected &void
int[]&childIndices,
[]&children)
&&&&&&&&&&通知所有需要此事件类型的通知的已注册侦听器。
protected &void
int[]&childIndices,
[]&children)
&&&&&&&&&&通知所有需要此事件类型的通知的已注册侦听器。
int&index)
&&&&&&&&&&返回父节点的子节点数组中索引 index 处的 parent 的子节点。
&&&&&&&&&&返回 parent 的子节点数。
&&&&&&&&&&返回父节点中子节点的索引。
&T extends &
(&T&&listenerType)
&&&&&&&&&&返回当前已在此模型上注册为 FooListener 的所有对象组成的数组。
&&&&&&&&&&向上构建节点的父节点一直到根节点(包括根节点),其中原始节点是返回数组中的最后一个元素。
protected &[]
int&depth)
&&&&&&&&&&向上构建节点的父节点一直到根节点(包括根节点),其中原始节点是返回数组中的最后一个元素。
&&&&&&&&&&返回树的根。
&&&&&&&&&&返回在此模型上注册的所有树模型侦听器组成的数组。
(&newChild,
int&index)
&&&&&&&&&&对它进行调用,以便在父节点的子节点中的 index 位置插入 newChild。
&&&&&&&&&&返回指定的节点是否为叶节点。
&&&&&&&&&&更改节点在树中的表示方式之后,调用此方法。
int[]&childIndices)
&&&&&&&&&&更改由 childIndicies 标识的子对象在树中的表示方式之后,调用此方法。
&&&&&&&&&&如果完全更改了节点的子节点、子节点的子节点、依此类推,则调用此方法。
int[]&childIndices)
&&&&&&&&&&将某些 TreeNodes 插入节点之后,调用此方法。
int[]&childIndices,
[]&removedChildren)
&&&&&&&&&&从节点移除一些 TreeNodes 之后,调用此方法。
&&&&&&&&&&如果已修改此模型依赖的 TreeNode,则调用此方法。
&&&&&&&&&&如果已修改此模型依赖的 TreeNode,则调用此方法。
&&&&&&&&&&通知它从其父节点中移除节点。
&&&&&&&&&&移除以前使用 addTreeModelListener() 添加的侦听器。
(boolean&newValue)
&&&&&&&&&&通过向 TreeNodes 询问 getAllowsChildren() 或 isLeaf(),设置是否测试无叶性。
&&&&&&&&&&将根设置为 root。
&newValue)
&&&&&&&&&&此方法设置由路径标识的 TreeNode 的用户对象,并发送更改的节点。
, , , , , , , , , ,
listenerList
listenerList
asksAllowsChildren
protected boolean asksAllowsChildren
确定 isLeaf 方法如何判断一个节点是否为叶节点。如果为 true,并且节点不允许有子节点,则该节点是叶节点。(如果它允许有子节点,则它不是叶节点,即使不存在任何子节点也是这样。)例如,让您区分文件系统中的文件夹 节点和文件 节点。
如果此值为 false,则没有子节点的任何节点都是叶节点,并且任何节点都可以获取子节点。
另请参见:,
DefaultTreeModel
public DefaultTreeModel(&root)
创建其中任何节点都可以有子节点的树。
参数:root - 作为树的根的 TreeNode 对象另请参见:
DefaultTreeModel
public DefaultTreeModel(&root,
boolean&asksAllowsChildren)
创建一棵树,指定某个节点是否可以有子节点,或者是否仅某些节点可以有子节点。
参数:root - 作为树的根的 TreeNode 对象asksAllowsChildren - 一个布尔值,如果任何节点都可以有子节点,则为 false,如果询问每个节点看是否有子节点,则为 true另请参见:
setAsksAllowsChildren
public void setAsksAllowsChildren(boolean&newValue)
通过向 TreeNodes 询问 getAllowsChildren() 或 isLeaf(),设置是否测试无叶性。如果 newValue 为 true,则传递 getAllowsChildren(),否则传递 isLeaf()。
asksAllowsChildren
public boolean asksAllowsChildren()
告知如何确定叶节点。
返回:如果只有不允许有子节点的节点是叶节点,则返回 true,如果没有子节点的节点(即使允许)是叶节点,则返回 false另请参见:
public void setRoot(&root)
将根设置为 root。root 为 null 暗示树不显示任何内容,并且是合法的。
返回树的根。仅当树没有节点时,返回 null。
指定者:接口
返回:树的根
getIndexOfChild
public int getIndexOfChild(&parent,
返回父节点中子节点的索引。如果父节点或子节点为 null,则返回 -1。
指定者:接口
参数:parent - 从此数据源获取的树中的节点child - 用户需要的节点
返回:父节点中子节点的索引,如果父节点或子节点为 null,则返回 -1
getChild(&parent,
int&index)
返回父节点的子节点数组中索引 index 处的 parent 的子节点。parent 必须是以前从此数据源获取的节点。如果 index 是 parent 的一个有效索引(即:index &= 0 && index & getChildCount(parent)),则不应返回 null。
指定者:接口
参数:parent - 从此数据源获取的树中的节点
返回:索引 index 位置的 parent 的子节点
getChildCount
public int getChildCount(&parent)
返回 parent 的子节点数。如果该节点是叶节点,或者它没有子节点,则返回 0。parent 必须是以前从此数据源获取的节点。
指定者:接口
参数:parent - 从此数据源获取的树中的节点
返回:节点 parent 的子节点数
public boolean isLeaf(&node)
返回指定的节点是否为叶节点。执行测试的方法取决于 askAllowsChildren 设置。
指定者:接口
参数:node - 要检查的节点
返回:如果该节点是一个叶节点,则返回 true另请参见:,
public void reload()
如果已修改此模型依赖的 TreeNode,则调用此方法。该模型将通知其所有侦听器该模型已更改。
valueForPathChanged
public void valueForPathChanged(&path,
&newValue)
此方法设置由路径标识的 TreeNode 的用户对象,并发送更改的节点。如果使用 TreeModel 中的自定义用户对象,您将需要为该对象创建子类,并将更改的节点的用户对象设置为有意义的内容。
指定者:接口
参数:path - 用户已更改的节点的路径newValue - TreeCellEditor 的新值
insertNodeInto
public void insertNodeInto(&newChild,
int&index)
对它进行调用,以便在父节点的子节点中的 index 位置插入 newChild。然后,通知 nodesWereInserted 创建适当的事件。这是添加子节点的首选方法,因为它将创建适当的事件。
removeNodeFromParent
public void removeNodeFromParent(&node)
通知它从其父节点中移除节点。这将通知 nodesWereRemoved 创建适当事件。这是移除节点的首选方法,因为它可以为您处理事件的创建。
nodeChanged
public void nodeChanged(&node)
更改节点在树中的表示方式之后,调用此方法。
public void reload(&node)
如果已修改此模型依赖的 TreeNode,则调用此方法。该模型将通知其所有侦听器给定节点下面的模型已更改。
参数:node - 其下面的模型已更改的节点
nodesWereInserted
public void nodesWereInserted(&node,
int[]&childIndices)
将某些 TreeNodes 插入节点之后,调用此方法。子索引应是新元素的索引,并且必须按升序排序。
nodesWereRemoved
public void nodesWereRemoved(&node,
int[]&childIndices,
[]&removedChildren)
从节点移除一些 TreeNodes 之后,调用此方法。childIndices 应是移除元素的索引,并且必须按升序排序。removedChildren 应是移除的子对象的数组。
nodesChanged
public void nodesChanged(&node,
int[]&childIndices)
更改由 childIndicies 标识的子对象在树中的表示方式之后,调用此方法。
nodeStructureChanged
public void nodeStructureChanged(&node)
如果完全更改了节点的子节点、子节点的子节点、依此类推,则调用此方法。调用此方法将发布 treeStructureChanged 事件。
getPathToRoot
public [] getPathToRoot(&aNode)
向上构建节点的父节点一直到根节点(包括根节点),其中原始节点是返回数组中的最后一个元素。返回的数组长度给出了树中节点的深度。
参数:aNode - 获取其路径的 TreeNode
getPathToRoot
protected [] getPathToRoot(&aNode,
int&depth)
向上构建节点的父节点一直到根节点(包括根节点),其中原始节点是返回数组中的最后一个元素。返回的数组长度给出了树中节点的深度。
参数:aNode - 要获取其路径的 TreeNodedepth - 提供对根(通过递归调用)执行的步骤数的 int,用于确定返回的数组的大小
返回:提供从根到指定节点的路径的 TreeNodes 数组。
addTreeModelListener
public void addTreeModelListener(&l)
为树更改后发布的 TreeModelEvent 添加侦听器。
指定者:接口
参数:l - 要添加的侦听器另请参见:
removeTreeModelListener
public void removeTreeModelListener(&l)
移除以前使用 addTreeModelListener() 添加的侦听器。
指定者:接口
参数:l - 要移除的侦听器另请参见:
getTreeModelListeners
public [] getTreeModelListeners()
返回在此模型上注册的所有树模型侦听器组成的数组。
返回:此模型的所有 TreeModelListener,如果当前没有注册任何树模型侦听器,则返回一个空数组从以下版本开始:
另请参见:,
fireTreeNodesChanged
protected void fireTreeNodesChanged(&source,
int[]&childIndices,
[]&children)
通知所有需要此事件类型的通知的已注册侦听器。使用传入此触发方法的参数延后创建事件实例。
参数:source - 更改的节点path - 到根节点的路径childIndices - 更改的元素的索引children - 更改的元素另请参见:
fireTreeNodesInserted
protected void fireTreeNodesInserted(&source,
int[]&childIndices,
[]&children)
通知所有需要此事件类型的通知的已注册侦听器。使用传入此触发方法的参数延后创建事件实例。
参数:source - 插入新元素的节点path - 到根节点的路径childIndices - 新元素的索引children - 新元素另请参见:
fireTreeNodesRemoved
protected void fireTreeNodesRemoved(&source,
int[]&childIndices,
[]&children)
通知所有需要此事件类型的通知的已注册侦听器。使用传入此触发方法的参数延后创建事件实例。
参数:source - 移除元素的节点path - 到根节点的路径childIndices - 移除元素的索引children - 移除的元素另请参见:
fireTreeStructureChanged
protected void fireTreeStructureChanged(&source,
int[]&childIndices,
[]&children)
通知所有需要此事件类型的通知的已注册侦听器。使用传入此触发方法的参数延后创建事件实例。
参数:source - 从该节点开始树模型已更改的节点path - 到根节点的路径childIndices - 受影响的元素的索引children - 受影响的元素另请参见:
getListeners
public &T extends & T[] getListeners(&T&&listenerType)
返回当前已在此模型上注册为 FooListener 的所有对象组成的数组。FooListener 是用 addFooListener 方法注册的。
可以使用 class 字面值来指定 listenerType 参数,如 FooListener.class。例如,可以使用下面的代码查询 DefaultTreeModel m 的树模型侦听器:
TreeModelListener[] tmls = (TreeModelListener[])(m.getListeners(TreeModelListener.class));
如果不存在这样的侦听器,则此方法将返回一个空数组。
参数:listenerType - 所请求侦听器的类型;该参数应该指定一个从 java.util.EventListener 继承的接口
返回:在此容器上注册为 FooListener 的所有对象的数组,如果没有添加这样的侦听器,则返回一个空数组
- 如果 listenerType 没有指定实现 java.util.EventListener 的类或接口从以下版本开始:
另请参见:
JavaTM&2&PlatformStandard&Ed. 6
有关更多的 API 参考资料和开发人员文档,请参阅 。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。 版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守。另请参阅。ExtJS中表格控件的使用,属性设置和数据的获取
本文由发表于4年前 |
&被围观 31,586 views+
ExtJS中表格的特性简介
表格由类Ext.grid.GridPanel定义,继承自Ext.Panel,xtype为grid
表格的列信息由Ext.grid.ColumnModel定义
表格的数据存储器由Ext.data.Store定义,根据解析数据的不同,数据存储器可具体分为如下几种:
JsonStore,SimpleStore,GroupingStore…
一个表格的基本编写过程:
1、创建表格列模型
var cm = new Ext.grid.ColumnModel({
{header: '角色', dataIndex: 'role'},
{header: '等级', dataIndex: 'grade'},
{header: '创建日期', dataIndex: 'createDate', type: 'date', renderer: Ext.util.Format.dateRenderer('Y年m月d日')}
//创建日期类型的数据
2、创建数据数组
var data = [
['士兵','7','2:34:56'],
['将军','10','2:34:56'],
3、创建一个数据存储对象store,包含两部分:proxy,获取数据的方式;reader,解析数据的方式
ArrayReader的mapping用来设置列的排列顺序
var store = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: 'role', mapping: 1},
{name: 'grade', mapping: 0}
{name: 'createDate', mapping: 2, type:'date', dateFormat:'Y-m-dH:i:s'}
//创建日期列和显示格式
store.load();
4、创建GridPanel,装配ColumnModel和store
var grid = new Ext.grid.GridPanel({
renderTo: 'grid',
store: store,
另外获取远程数据可以使用ScriptTagProxy,如下所示
var store = new Ext.data.Store({
proxy: new Ext.data.ScriptTagProxy({
url:'http://...'}),
reader: new Ext.data.ArrayReader({}, [
{name: 'role', mapping: 1},
{name: 'grade', mapping: 0}
sortInfo: {field: "role", direction: "ASC"}
//设置默认排序列,ASC/DESC
表格的常用属性功能
var grid = new Ext.grid.GridPanel({
enableColumnMove: false, //禁止拖放列
enableColumnResize: false,
//禁止改变列的宽度
stripeRows: true,
//斑马线效果
loadMask: true,
//读取数据时的遮罩和提示功能
renderTo: 'grid',
store: store
var cm = new Ext.grid.ColumnModel({
{header: '角色', dataIndex: 'role', width:90, sortable: true},
//width设置列宽度,默认为100px,sortable设置排序功能
{id:'grade', header: '等级', dataIndex: 'grade', width:40}
var grid = new Ext.grid.GridPanel({
renderTo: 'grid',
store: store,
viewConfig:{
//让每列自动填充满表格
forceFit: true
autoExpandColumn: 'grade'
//自动延伸列,列的id在ColumnModel中定义
渲染表格,为表格设置特殊样式
只需要在cm里面增加一个renderer属性,添加一个自定义函数来渲染传进来(由EXT自动传递)的参数的样式即可,即在返回value之前拼装上相应的HTML和CSS或者JS响应事件。
function renderSex(value) {
if (value == 'male') {
return "&span style='color:'&男&/span&&img src='images/icon_male.png' /&";
return "&span style='color:'&女&/span&&img src='images/icon_female.png' /&";
var cm = new Ext.grid.ColumnModel([
{header:'id',dataIndex:'id'},
{header:'name',dataIndex:'name'},
{header:'sex',dataIndex:'sex',renderer:renderSex},
var data = [
['1','Jason','male'],
['2','Kate','female']
var store = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: 'id'},
{name: 'name'},
{name: 'sex'}
store.load();
var grid = new Ext.grid.GridPanel({
autoHeight: true,
renderTo: 'grid',
store: store,
自动显示行号,只要在创建cm时创建一个RowNumberer就可以了
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
//显示行号
{header:'id',dataIndex:'id'},
{header:'name',dataIndex:'name'},
{header:'sex',dataIndex:'sex',renderer:renderSex},
store.remove(store.getAt(i));
grid.view.refresh();
为表格添加复选框
需要使用CheckboxSelectionModel
SelectionModel sm在使用时要放到cm和表格中
var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
{header:'编号',dataIndex:'id'},
{header:'名称',dataIndex:'name'}
var data = [
['1','name1'],
['2','name2']
var store = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: 'id'},
{name: 'name'}
store.load();
var grid = new Ext.grid.GridPanel({
autoHeight: true,
renderTo: 'grid',
store: store,
通过RowSelectionModel设置只选择一行
var grid = new Ext.grid.GridPanel({
autoHeight: true,
renderTo: 'grid',
store: store,
sm: new Ext.grid.RowSelectionModel({singleSelect:true})
使用选择模型获取数据
grid.on('click', function() {
var selections = grid.getSelectionModel().getSelections();
for (var i = 0; i & selections. i++) {
var record = selections[i];
Ext.Msg.alert(record.get("id"));
从MVC的思想来看表格控件:
* Ext.data.Store可看做模型
* Ext.grid.GridPanel可看做控制器
* Ext.grid.GridView可看做视图
* 一般GridView由GridPanell自动生成,如果想设置GridView的属性时,可以通过Ext.grid.GridPanel的getView()获得视图实例
Ext.get('button1').on('click', function() {
grid.getView().scrollToTop();
grid.getView().focusCell(0, 0);
= grid.getView().getCell(0, 0);
cell.style.backgroundColor = 'red';
使用GridPanel的viewConfig在创建表格时设置GridView的初始化参数
var grid = new Ext.grid.GridPanel({
height: 100,
width: 400,
renderTo: 'grid',
store: new Ext.data.Store({
autoLoad: true,
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, meta)
columns: meta,
viewConfig: {
columnsText: '显示的列',
//设置下拉菜单提示文字
scrollOffset: 30,
//设置右侧滚动条的预留宽度
sortAscText: '升序',
//设置下拉菜单提示文字
sortDescText: '降序',
//设置下拉菜单提示文字
forceFit: true
//自动延展每列的长度
为表格添加分页工具条
* 可以使用GridPanel的bbar属性,并创建Ext.PagingToolbar分页工具条对象
* 注意,如果配置了分页工具条,store.load()就必须在构造表格以后执行。
var grid = new Ext.grid.GridPanel({
renderTo: 'grid',
autoHeight: true,
store: store,
bbar: new Ext.PagingToolbar({
pageSize: 10,
//每页显示10条数据
store: store,
displayInfo: true,
//显示数据信息
displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
emptyMsg: "没有记录"
//没有数据时显示的信息
store.load();
从后台脚本获取分页数据
使用HttpProxy传递请求,获取服务器的JSON数据,交给JsonReader解析
var cm = new Ext.grid.ColumnModel([
{header:'编号',dataIndex:'id'},
{header:'名称',dataIndex:'name'}
var store = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'page.jsp'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalProperty',
root: 'root'
{name: 'id'},
{name: 'name'}
var grid = new Ext.grid.GridPanel({
renderTo: 'grid',
autoHeight: true,
//数据传回来之前高度未知,所以要使用自适应高度
store: store,
bbar: new Ext.PagingToolbar({
pageSize: 10,
store: store,
displayInfo: true,
displayMsg: '显示第 {0} 条到 {1} 条记录 / 共 {2} 条',
emptyMsg: "没有记录"
store.load({params:{start:0,limit:10}});
如果想让分页工具条显示在表格的顶部,可以使用GridPanel的tbar属性设置添加工具条
让ExtJS在对返回的数据进行分页
* 需要在页面中引入examples/locale目录下的PagingMemoryProxy.js文件
* 再使用PagingMemoryProxy设置代理
var store = new Ext.data.Store({
proxy: new Ext.data.PagingMemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: 'id'},
{name: 'name'},
{name: 'descn'}
//在创建GridPanel之后调用
store.load({params:{start:0,limit:3}});
可编辑表格控件EditorGrid的使用
制作一个简单的EditorGrid的步骤
1、定义列ColumnModel,在里面添加editor属性
var cm = new Ext.grid.ColumnModel([{
header: '编号',
dataIndex: 'id',
editor: new Ext.grid.GridEditor(
new Ext.form.TextField({
allowBlank: false
//不允许在TextField中输入空值
header: '名称',
dataIndex: 'name',
editor: new Ext.grid.GridEditor(
new Ext.form.TextField({
allowBlank: false
2、准备一个数组
var data = [
['1','Jason'],
['2','Jay']
3、创建Ext.data.Store,设置内存代理,设置ArrayReader解析数组
var store = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: 'id'},
{name: 'name'}
4、加载数据,创建EditorGridPanel
store.load();
var grid = new Ext.grid.EditorGridPanel({
autoHeight: true,
renderTo: 'grid',
store: store,
为可编辑表格添加和删除数据
1、使用Record的create方法创建一个记录集MyRecord,MyRecord相当于一个类
var MyRecord = Ext.data.Record.create([
{name: 'id', type: 'string'},
{name: 'name', type: 'string'}
store.load();
2、创建EditorGridPanel面板,在属性tbar中创建Ext.Toolbar
var grid = new Ext.grid.EditorGridPanel({
autoHeight: true,
renderTo: 'grid',
store: store,
tbar: new Ext.Toolbar(['-', {
//-表示菜单分隔符
text: '添加一行',
handler: function(){
var p = new MyRecord({
grid.stopEditing();
//关闭表格的编辑状态
store.insert(0, p);
//创建的Record插入store的第一行
grid.startEditing(0, 0);
//激活第一行第一列的编辑状态
text: '删除一行',
handler: function(){
Ext.Msg.confirm('信息', '确定要删除?', function(btn){
if (btn == 'yes') {
var sm = grid.getSelectionModel();
//获取表格的选择模型
var cell = sm.getSelectedCell();
//获取选中的单元格
var record = store.getAt(cell[0]);
//通过行号得到store这一行对应的Record
store.remove(record);
//移除数据
为可编辑表格保存修改的结果
在上面例子的基础之上,添加一个保存按钮
text: '保存',
handler: function(){
var m = store.modified.slice(0); //获得store中修改过得数据
for (var i = 0; i & m. i++) {
//验证表格信息是否正确,是否包含空格
var record = m[i];
var fields = record.fields.
for (var j = 0; j & fields. j++) {
var name = fields[j];
var value = record.data[name];
var colIndex = cm.findColumnIndex(name);
var rowIndex = store.indexOfId(record.id);
var editor = cm.getCellEditor(colIndex).
if (!editor.validateValue(value)) {
Ext.Msg.alert('提示', '请检查输入的数据是否正确!', function(){
grid.startEditing(rowIndex, colIndex);
var jsonArray = [];
Ext.each(m, function(item) {
jsonArray.push(item.data);
//把修改过得数据放到jsonArray中
Ext.lib.Ajax.request(
//使用Ajax请求提交给后台
'save_data.jsp',
{success: function(response){
//返回成功
Ext.Msg.alert('信息', response.responseText, function(){
store.reload();
},failure: function(){
//返回失败
Ext.Msg.alert("错误", "服务器保存数据出错!");
'data=' + encodeURIComponent(Ext.encode(jsonArray))
另外store可以设置属性pruneModifiedRecords: true。这样,每次remove或load操作时store会自动清除modified标记,可以避免出现下次提交时还会把上次那些modified信息都带上的现象。
限制表格输入的数据类型
NumberField
header:'ID',
dataIndex:'id',
editor:new Ext.grid.GridEditor(new Ext.form.NumberField({
//NumberField限制只能输入数字
allowBlank: false,
allowNegative: false,
//不能输入减号
maxValue: 10
var comboData = [
['0','Java'],
['1','Android']
header:'ComboBox',
dataIndex:'combo',
editor:new Ext.grid.GridEditor(new boBox({
store: new Ext.data.SimpleStore({
fields:['value','text'],
data: comboData
emptyText: '请选择',
mode: 'local',
triggerAction: 'all',
valueField: 'value',
displayField: 'text',
readOnly:true
renderer: function(value){
return comboData[value][1];
header:'Date',
dataIndex:'date',
editor:new Ext.grid.GridEditor(new Ext.form.DateField({
format: 'Y-m-d',
minValue: '',
disabledDays: [0, 6],
disabledDaysText: '选择周一到周六之间的日期'
renderer: function(value) {
return value.format("Y-m-d");
属性表格控件PropertyGrid的使用
是在EditorGrid的基础上开发的更智能的高级表格组件
var grid = new Ext.grid.PropertyGrid({
title: '属性表格控件PropertyGrid',
autoHeight: true,
width: 400,
renderTo: 'grid',
viewConfig: {
forceFit: true
"String": "String",
"Date": new Date(Date.parse('07/24/2011')),
"boolean": false,
"float": .01
禁用PropertyGrid编辑功能的方法
grid.on('beforeedit', function(e){
e.cancel =
根据表格的name获取value
grid.store.getById('Jason').get(value);
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:
指弹吉他 && 技术

我要回帖

更多关于 ext.data.treemodel 的文章

 

随机推荐