TabPanel
1、当tab标签超过一定浏览器的宽度时,使之自动加载滚动条autoScroll:true;
设置滚动条为自动,此前若需要看到效果必须要设置enableTabScroll属性为真
2、添加右键菜单:
使用extjs的右键组件TabCloseMenu
{ xtype:'tabpanel', id:'tabs', autoScroll:true, region:'center', // a center region is ALWAYS required for border layout deferredRender:false, activeTab:0, // first tab initially active items:centPortal, plugins:new Ext.ux.TabCloseMenu({ closeTabText:'关闭当前标签', closeOtherTabsText:'关闭其他标签', closeAllTabsText:'关闭所有标签' }) }
3、从iframe中操作父界面
3.1、如果是得到,则直接使用parent.Ext.getCmp();或者是parent.变量名
3.2、如果是添加一个组件到父容器,则需要在新建 new parent.Ext.panel();
GridPanel
1、本地数据分页
2、后台交互分页
//数据显示的表格 var tabs = new Ext.grid.GridPanel({ region:'center', title:'学生信息列表', width:750, height:400, margins:{top:5,right:0,bottom:0,left:50}, cm:cm, store:store, bbar: new Ext.PagingToolbar({ pageSize:15, store:store, displayInfo:true, displayMsg:'显示第{0}条到第{1}条记录,总共有{2}条记录', emptyMsg:'当前还没有记录' }), sm:sm }); store.load({params:{start:0,limit:15}}); //这里的start,和limit就是用来分页的两个参数
3、gridpanel中对前台数据格式转换(渲染):
3.1、在列模型中转换数据格式(不会改变store中实际值)
renderer的配置参数有:
value, metaData, record, rowIndex, colIndex, store
//一般情况下的渲染,用于根据类型判断显示文字信息
{header :'日志类型',dataIndex:'userLogType',width:150,renderer:function(value){
return value==1?'系统日志':'用户日志'
}}
//这个渲染是会在鼠标滑过单元格时,弹出提示框显示该单元格信息
renderer:function(){
return '<div ext:qtip='+val+'></div>';
}
//主要用于该列的自动换行显示
renderer:function (v, meta) {
meta.attr = 'style="white-space:normal;"';
return v;
}
3.2、在store中转换数据格式(改变了store中的值)
{name: 'rating', type: 'int', convert: function(v, rec) { if (rec[3] < 0) return 2; if (rec[3] < 1) return 1; return 0; } }
3.3、在gridpanel中渲染该函数,用来鼠标指定的列显示缩略图
function thumbnail(data, metadata, record, rowIndex, columnIndex, store) { var url = store.getAt(rowIndex).get('filePath'); //var fileName = store.getAt(rowIndex).get('fileName'); //qtitle标题 qtip:内容 var img = "<img src='<%=WebConfig.WEB_DOWNLOAD%>/" + url + "' width='100%' >"; var displayText = '<div ext:qtitle="图片信息" ext:qtip="' + img + '" >' + data + '</div>'; return displayText; }
4、在后台排序
当使用后台排序时,需要注意的是使用的请求方式需要时proxy形式而不是url的形式,然后开启remoteSort为true,此时如果gridpanel中的该列允许排序的话,后台就会接收到相应的排序参数,分别为sort、dir
treePanel
1、树节点的attributes属性
ext的treePanel中有一个attributes属性,他是一个包含后台赋予的值的对象,后台的必须参数有Id(表示该节点)、text(节点名称)
注意:后如果想要从后台传递其他参数给这个树节点,那么只需呀附加Id、text之外的键值对即可,不需要将该键值对再次封装在attributes属性中
2、生成一棵树
function newTree(rVisible) { var tree = new Ext.tree.TreePanel({ animate:true,//是否有动画效果 useArrows:false,//是否有下三角 lines:false,//是否显示树的那根线 autoScroll:true, rootVisible: rVisible,//是否显示树的根节点(当树的值是后台传过来的时候,系统会自动加载一个根节点,然后将闯过来的数据作为子节点载入) loader: new Ext.tree.TreeLoader(),//树的节点的加载器,用来自动组装一棵树,等价于:dataUrl:'**.**' root:new Ext.tree.AsyncTreeNode(),//树的根节点 containerScroll: true,//为树加载滚动条 enableDD:true,//设置树是否可以拖拽,默认为false border: false, width: 250, height: 300, enableDD:true, listeners: { //树的监听器,监听当树的节点的选项改变时触发 'render': function(tp){ tp.getSelectionModel().on('selectionchange', function(tree, node){ if(node.isLeaf) alert("I'm Leaf"); else alert("I'm root'); } })} } listeners: { //监听树节点的单击事件 'render': function(tp){ tp.on(click, function(node,e){ if(node.isLeaf) alert("I'm Leaf"); else alert("I'm root'); } })} } }) return tree; }
3、根据后台传的值构建一棵树
tree.getLoader().dataUrl = ' ';
//取值的url,传过来的值是一个json对象的数组[{id:'1',text:'a',leaf:true},{id:'2',text:'b',children:[{text:'2.1',leaf:true}]}]
或者在构建树的时候,直接指定属性dataUrl
tree.root.reload();//刷新树结构
4、前台确定一棵树
var entTree = newTree(true); var entBase = new Ext.tree.AsyncTreeNode({ text:'企业基本信息', draggable:false, id:'entBase', children:[{ text:'企业基本信息', iconCls:'nav', draggable:false, id:'entMsg', leaf:true },{ text:'企业规章制度', iconCls:'nav', draggable:false, id:'entRule', leaf:true }] }) entTree.setRootNode(entBase);//设置树的根节点 entTree.expand(true,true);//设置树是否展开、是否有动态效果
5、树的右键菜单配置方式
contextMenu:new Ext.menu.Menu({ items:[ { id:'refresh-node', text:'刷新', iconCls:'silk-table-refresh' }, { id:'show-node', text:'查看详情', iconCls:'silk-table-go' }, { id:'add-node', text:'新增信息', iconCls:'silk-table-row-insert' }, { id:'edit-node', text:'修改信息', iconCls:'silk-table-edit' }, { id:'delete-node', text:'删除信息', iconCls:'silk-table-row-delete' } ], listeners:{ itemclick:function (item) { switch (item.id) { case 'refresh-node': refresh(); break; case 'show-node': show(this); break; case 'add-node': add(this); break; case 'edit-node': edit(this); break; case 'delete-node': del(); break; } } } }) 写完右键菜单后,还要在树的监听器里设置 contextmenu:function (node, e) { node.select(); var c = node.getOwnerTree().contextMenu; c.showAt(e.getXY());//设置坐标 }
相关推荐
在ExtJs中,GridPanel是用于展示数据的常用组件,它可以提供丰富的功能,如排序、分页、筛选等。在实际应用中,我们经常需要监听用户的交互行为,比如双击行进行进一步的操作。本篇文章将深入讲解如何在ExtJs ...
19)选项面板TabPanel 20)基本表格GridPanel 21)视图区ViewPort 22)可编辑表格EditorGridPanel 23)窗口基本应用 24)窗口分组 25)对话框 26)与服务器交互 27)Record 28)Store 29)TreePanel基本使用 30)使用树控件...
EXT 2.0是EXT的一个早期版本,尽管如此,它已经包含了大量功能强大的组件,如TreePanel(树形面板)、GridPanel(表格面板)和TabPanel(选项卡面板)。这些组件在Web开发中广泛应用,能显著提升用户体验。 1. ...
7. **TreePanel(树形面板)**:TreePanel用于展示层级结构的数据,可以用来创建文件系统浏览、组织结构图等。它支持动态加载、节点拖放、展开/折叠等功能。 8. **GridPanel(表格面板)**:GridPanel是用于展示二...
- **简单布局**:Efs框架支持多种布局方式,其中包括最基本的布局形式。开发者可以通过简单的HTML结构和适当的属性配置来实现所需布局。 - **复杂布局**:对于更高级的需求,Efs也提供了灵活的布局方案,允许开发者...
- **简单布局**:Efs框架提供了一种简便的方式来定义页面的基本布局结构。通过使用预定义的布局类型(例如`fit`, `border`等),开发人员可以轻松地组织页面元素,而无需深入了解ExtJS的复杂配置选项。 - **再布局*...
1. **EXTJS组件**:EXTJS的核心是它的组件模型,包括GridPanel、TreePanel、PropertyGrid、EditorGridPanel、TabPanel、FormPanel、Panel、Window、ToolTip和FieldSet等。这些组件可以组合起来创建复杂的用户界面,...
- 组件详解:逐个解析EXTJS中的重要组件,如GridPanel、TreePanel、TabPanel等。 - 数据绑定和存储:讲解如何使用Store、Model和Proxy实现数据管理。 - 布局和样式:深入学习EXTJS的布局机制和CSS样式应用。 - 实战...
- **特点**: 提供了一套丰富的UI组件库,如表格、树形菜单、表单等,并支持多种布局管理方式,便于快速构建复杂的前端界面。 #### 二、开始ExtJS 1. **获得ExtJS**: - 通过官方网站或第三方资源下载最新版本的...
2. **面板类**:如面板(Panel)、标签面板(TabPanel)、提示框(Tip)、窗口(Window)、字段集(FieldSet)、表单面板(FormPanel)、网格面板(GridPanel)和树形面板(TreePanel),构成应用的基本界面结构。 3. **窗口**:...
RDF 封装了 ExtJS 中最常用的布局方式之一——边框布局(Border Layout)。边框布局是一种灵活且高效的布局管理器,适用于创建具有多区域的复杂用户界面。在 RDF 中,可以通过简单的 HTML 属性设置来应用这种布局。 ...
EXTJS 3.1.1中包含的组件有:GridPanel(表格)、FormPanel(表单)、Window(窗口)、TabPanel(选项卡)、Toolbar(工具栏)等。 2. **布局管理**: EXTJS 3.1.1提供多种布局模式,如Fit布局、Border布局、Form...
2. **EXTJS控件应用**:项目涵盖了EXTJS2.2几乎所有的控件,如GridPanel用于数据展示,FormPanel用于用户输入,TabPanel实现多页面切换,TreePanel用于层次结构的数据展示,Window和Dialog则提供弹出窗口功能。...
- FormPanel是用于创建表单的组件,可以设置`frame`(是否有边框)、`layout`(布局方式)、`defaults`(组件默认属性)等。例如,`layout:'column'`表示列布局,`labelSeparator`定义标签和字段之间的分隔符。 - ...
TreePanel组件提供了一个层次化的数据展示方式,适用于显示目录结构或具有父子关系的数据集合。 ##### 4. **Viewport(视口)** Viewport组件是Ext应用程序的根容器,用于填充整个浏览器窗口,管理布局和响应窗口...
EXTJS中的TreePanel是用于展示层次结构数据的组件,常用于文件系统或者组织架构的展示。它支持拖放操作、节点展开/折叠以及节点的动态加载。在树结构中,你可以定义节点文本、图标、叶子节点与父节点等属性,同时...
每种布局管理器都有其独特的用途和配置选项,开发者可以根据实际需求选择合适的布局管理器。 #### 六、ExtJS 表单 -- Ext.form.FormPanel **6.1 FormPanel 表单** `Ext.form.FormPanel` 是用于创建表单的组件。它...
随着课程的推进,学习者将接触到更为高级的组件,如FormPanel、TreePanel、GridPanel等。这些组件在数据交互和展示方面提供了更多的可能性。例如,GridPanel可以用来展示表格数据,并支持行的动态添加、删除等操作,...
EXT控件包括但不限于以下几种: 1. GridPanel:数据网格,用于展示大量结构化数据,支持排序、分页、过滤、编辑等功能。 2. FormPanel:表单组件,用于收集和验证用户输入,支持各种表单字段和布局。 3. TreePanel...