某某茶叶有限公司欢迎您!
金沙棋牌在线 > 服务器&运维 > Extjs4 GridPanel 的几种样式使用介绍_extjs_脚本之家

Extjs4 GridPanel 的几种样式使用介绍_extjs_脚本之家

时间:2019-11-29 02:56

最近调试EXTJS 4的treegrid实例,看了很多水友的文章,以及官方的demo, 没一个可靠的,全都无法显示出来。像对于我们习惯用C++的coder来说,EXTJS简直就是一群无政府土匪来维护的,官网上连个搜索框都没有,找资料基本靠遍历,还是人工的。使用treegrid,需要在调用页面的head中加载以下几个文件: 复制代码 代码如下:

注:抄书 传统的js实现继承操作为: 一:定义一个父类 复制代码 代码如下: var BaseClass = function(){ //..... }; BaseClass.prototype.someMethod = function(){ //..... }; BaseClass.prototype.overridenMethod = function(){ //.... } 为BaseClass定义两个函数someMethod 和overridenMethod ,,然后定义一个subClass子类,可以直接从BaseClass中继承所有的属性和函数, 复制代码 代码如下: var subClass = function(){ BaseClass.call; }; subClass.prototype = new BaseClass(); subClass.prototype.newMethod = function(){ //... }; subClass.prototype.overridenMethod = function(){ //... } 在上面的代码中,subClass的构造函数首先调用BaseClass的构造函数初始化数据,然后通过subClass.prototype = new BaseClass();这条语句让subClass类获得BaseClass中的所有属性和函数。这样就实现了继承。在此之后我们就可以操作subClass的prototype,为子类添加新的函数或者覆写父类的同名函数。 在EXT中使用Ext.extend()函数实现继承功能的方法: 复制代码 代码如下: var subClass = function(){ subClass.superclass.costructor.call; }; Ext.extend(subClass, BaseClass,{ newMethod: function(){ //... }, overridenMethod : function; 在Ext.extend()函数通过 subClass.superclass.costructor.call;就可以直接调用父类的构造函数。这个函数的第一个参数总是this, 以确保父类的构造函数在子类的作用域里工作。 如果父类的构造函数需要传入参数,我们也就可以将所需要的参数直接传给它,如: subClass.superclass.costructor.call; 这样我们就得到了一个继承了父类的所有属性和函数的子类。

简单表格

抄些常用工具方便查找 ----------字符串 Ext.util.Format.capitalize;//将首字母变大写 Ext.util.Format.ellipsis(string value, Number length);//截取指定length字符,将自动在尾处添加省略号'...' Ext.util.Format.htmlEncode; //将文本编码 lowercase;//变小写 stripScripts;//删除所有的Script标签 stripTags;//删除所有标签 substr trim ----------日期 Ext.util.Format.date(Mixd value, [String format]); 如:Ext.util.Format.date=>2012-03-19 Ext.util.Format.dateRenderer;//专门为Ext.grid.Gridpanel使用,ColumnModel中 ---------宿舍判断 defaultValue(Mixed value, string defalutValue);//如果第一个参数为空,则返回第二个,反之。 undef(Mixed value;//如果value等于空,则回返空字符串,否则返回value ==========扩展Function 1、createCallback()会创建当前函数的回调函数,如: 复制代码 代码如下: var sayHi = function{ alert; } new Ext.Button({ text: 'say hi', handler: sayHi.createCallback; createCallback的作用是为原有的参数设置默认参数。在上例中,在使用createCallback时就已经将‘jinshan' 设置给对应的回调函数,单击按钮后将参数传递给sayHi会创建当前函数的代理函数。 如: 复制代码 代码如下: var sayHi = function{ alert; //this.text表示btn函数的text值Say Hi, } var btn = new Ext.Button; btn.on('click', sayHi.createDelegate; 这个创建了代理, sayHi指向了btn。。如果btn改成其它对象,则sayHi将会自动转到其它对象去。 3、createInterceptor;为当前函数设置拦截器,类似 AOP 概念。如: 复制代码 代码如下: var sayHi = function; } sayHi; var sayHito = sayHi.createInterceptor{ return name == '2'; }); sayHito;//弹出2 拦截器会在原函数执行之前执行,并且只有在拦截器返回true时才会去执行原函数。

然后在页面的body中写上一个div 复制代码 代码如下:

排序,显示某列,读取本地数据

以上官方就这么写的,BUT,蛋疼的是,JS里没有改,不改就没法运行成功。把treegrid.js中的renderto,改成我们的div的ID就行了。记得把json数据文件和css文件等拷贝到调用目录下。 完成的treegrid.js代码为: 复制代码 代码如下: /* This file is part of Ext JS 4 Copyright 2011 Sencha Inc Contact: GNU General Public License Usage This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: . If you are unsure which license is appropriate for your use, please contact the sales department at . */ Ext.require([ 'Ext.data.*', 'Ext.grid.*', 'Ext.tree.*' ]); Ext.onReady { //we want to setup a model and store instead of using dataUrl Ext.define('Task', { extend: 'Ext.data.Model', fields: [ {name: 'task', type: 'string'}, {name: 'user', type: 'string'}, {name: 'duration', type: 'string'} ] }); var store = Ext.create('Ext.data.TreeStore', { model: 'Task', proxy: { type: 'ajax', //the store will get the content from the .json file url: 'treegrid.json' }, folderSort: true }); //Ext.ux.tree.TreeGrid is no longer a Ux. You can simply use a tree.TreePanel var tree = Ext.create('Ext.tree.Panel', { title: 'Core Team Projects', width: 500, height: 300, renderTo: 'tree-example',//2B的官方和SV党们,这里竟然是getbody,bo你妹啊。 collapsible: true, useArrows: true, rootVisible: false, store: store, multiSelect: true, singleExpand: true, //the 'columns' property is now 'headers' columns: [{ xtype: 'treecolumn', //this is so we know which column will show the tree text: 'Task', flex: 2, sortable: true, dataIndex: 'task' },{ //we must use the templateheader component so we can use a custom tpl xtype: 'templatecolumn', text: 'Duration', flex: 1, sortable: true, dataIndex: 'duration', align: 'center', //add in the custom tpl for the rows tpl: Ext.create('Ext.XTemplate', '{duration:this.formatHours}', { formatHours: function { return Math.round + ' mins'; } else if { var min = v - Math.floor; return Math.floor + 'h ' + Math.round + 'm'; } else { return v + ' hour' + ; } } }) },{ text: 'Assigned To', flex: 1, dataIndex: 'user', sortable: true }] }); });

复制代码 代码如下://本地数据 var datas = [ ['1', 'gao', 'man'], ['2', 'gao', 'man'], ['3', 'gao', 'man'] ]; //创建面板 Ext.create('Ext.grid.Panel', { title: 'easy grid', width: 400, height: 300, renderTo: Ext.getBody(), frame: true, viewConfig: { forceFit: true, stripRows: true }, store: {//配置数据代理 fields: ['id', 'name', 'gender'], proxy: { type: 'memory', data: datas, reader: 'array' //数据读取器为 数据读取 }, autoLoad: true }, columns: [{ //自定义列信息 header: 'id', width: 30, dataIndex: 'id', //绑定fields中得字段 sortable: true }, { header: 'name', width: 80, dataIndex: 'name', sortable: true }, { header: 'gender', width: 80, dataIndex: 'gender', sortable: true } ] }) 表格列:行号, bool行转成是否,日期格式化输出, number数据类型格式化输出,Action列

代码;复制代码 代码如下:Ext.tip.QuickTipManager.init(); Ext.create('Ext.data.Store', { storeId: 'sampleStore', fields: [{ name: 'framework', type: 'string' }, { name: 'rocks', type: 'boolean' }, { name: 'volume', type: 'number' }, { name: 'topday', type: 'date' }, { name: 'change', type: 'number' }, { name: 'date', type: 'date' }, { name: 'price', type: 'number' } ], data: { 'items': [{ "framework": "Ext JS 1", "rocks": true, "symbol": "goog", "date": '2011/04/22', "change": 0.8997, "volume": 3053782, "topday": '04/11/2010', "price": 1000.23 }, { "framework": "Ext JS 2", "rocks": true, "symbol": "goog", "date": '2011/04/22', "change": 0.8997, "volume": 3053782, "topday": '04/11/2010', "price": 1000.23 }, { "framework": "Ext JS 3", "rocks": true, "symbol": "goog", "date": '2011/04/22', "change": 0.8997, "volume": 3053782, "topday": '04/11/2010', "price": 1000.23 }] }, proxy: { type: 'memory', reader: { type: 'json', root: 'items' } } }); Ext.create('Ext.grid.Panel', { title: 'Boolean Column Demo', store: Ext.data.StoreManager.lookup, columns: [ Ext.create('Ext.grid.RowNumberer', { text: '行号', width: 40 }), { text: 'Framework', dataIndex: 'framework', width: 100 }, { xtype: 'booleancolumn', text: 'Rocks', trueText: '是', falseText: '否', dataIndex: 'rocks' }, { text: 'Date', dataIndex: 'date', xtype: 'datecolumn', format: 'Y年m月d日' }, { text: 'Change', dataIndex: 'change', xtype: 'numbercolumn', format: '0.000' }, { text: 'Volume', dataIndex: 'volume', xtype: 'numbercolumn', format: '0,000' }, { text: 'Top Day', dataIndex: 'topday', xtype: 'datecolumn', format: 'l' }, { text: 'Current Price', dataIndex: 'price', renderer: Ext.util.Format.usMoney }, { header: '操作', xtype: 'actioncolumn', //操作列 width: 100, items: [{ icon: 'e.gif', // 编辑图片地址 tooltip: ‘编辑', //鼠标over显示的文字 使用此功能,必须 Ext.tip.QuickTipManager.init(); handler: function (grid, rowIndex, colIndex) { var rec = grid.getStore; alert("Edit " + rec.get; } }, { icon: 'd.gif', tooltip: 'Delete', handler: function (grid, rowIndex, colIndex) { var rec = grid.getStore; alert("Terminate " + rec.get; } }] }, { } ], height: 200, width: 800, renderTo: Ext.getBody; 下面这个图是 单击 操作按钮触发的回调函数的详细信息.

下面演示 自定义 渲染函数

效果:

复制代码 代码如下:Ext.tip.QuickTipManager.init(); function customFunction { if { metadata.style = 'color:red'; } return value; } Ext.create('Ext.data.Store', { storeId: 'sampleStore', fields: [ { name: 'custom', type: 'number' } ], data: { 'items': [{ "custom": 10 }, { "custom": 100 }, { "custom": 1000 }] }, proxy: { type: 'memory', reader: { type: 'json', root: 'items' } } }); Ext.create('Ext.grid.Panel', { title: 'Boolean Column Demo', store: Ext.data.StoreManager.lookup, columns: [ Ext.create('Ext.grid.RowNumberer', { text: '行号', width: 40 }), { text: 'custom', dataIndex: 'custom', renderer: customFunction //调用自定义函数 来渲染 } ], height: 200, width: 800, renderTo: Ext.getBody; 选择模式:Selection

选择模式分为三类:

1,行选择

2.单元格选择

3.复选框选择