Ext.js5的小部件表格(23)
来源:互联网 发布:游戏矩阵徐乐 编辑:程序博客网 时间:2024/05/17 01:42
view
/** * This example shows how to create Widgets in grid columns. Widgets are lightweight * components with a simpler lifecycle. * 这个例子展示了怎样在表格列中创建小部件。 */Ext.define('KitchenSink.view.grid.WidgetGrid', { extend: 'Ext.grid.Panel', requires: [ 'Ext.grid.column.Action', 'Ext.ProgressBarWidget', 'Ext.slider.Widget', 'Ext.sparkline.*' ], xtype: 'widget-grid', store: 'Widgets', collapsible: true, height: 350, width: 1050, title: 'Widget Grid', viewConfig: { stripeRows: true, //enableTextSelection是否启用文本选择 enableTextSelection: false, //标记记录已被修改。True 当单元格被修改时,显示单元格指示器(左上角的红三角) markDirty: false }, //是给Grid实现鼠标在行经过时的轨迹效果,鼠标掠过这条数据的时候这条数据高亮显示 trackMouseOver: false, disableSelection: true, initComponent: function () { var me = this; me.columns = [{ text: 'Button', width: 105, xtype: 'widgetcolumn', dataIndex: 'progress', widget: { width: 90, xtype: 'splitbutton', icon: '../shared/icons/fam/feed_add.png', handler: function(btn) { var rec = btn.getWidgetRecord(); Ext.Msg.alert("Button clicked", "Hey! " + rec.get('name')); } } }, { text : 'Progress', xtype : 'widgetcolumn', width : 120, dataIndex: 'progress', widget: { xtype: 'progressbarwidget', //给进度条创建背景,接受两个参数 //value 0-1之间 //percent 在0-100之间 textTpl: [ '{percent:number("0")}% done' ] } }, { text: 'Run Mode', width: 150, xtype: 'widgetcolumn', widget: { xtype: 'combo', store: [ 'Local', 'Remote' ], listeners: { select: function(combo){ console.log(combo.getValue() + ' selected'); } } } }, { text : 'Slider', xtype : 'widgetcolumn', width : 120, dataIndex: 'progress', widget: { xtype: 'sliderwidget', minValue: 0, maxValue: 1, //// 精确到小数点后两位 decimalPrecision: 2, listeners: { change: function(slider, value) { // If the widget has been decorated by the WidgetColumn with context-returning methods // then extract data and update its context record. if (slider.getWidgetRecord) { var rec = slider.getWidgetRecord(); if (rec) { rec.set('progress', value); } } } } } }, { text: 'Line', width: 100, dataIndex: 'sequence1', xtype: 'widgetcolumn', widget: { xtype: 'sparklineline', tipTpl: 'Value: {y:number("0.00")}' } }, { text: 'Bar', width: 100, dataIndex: 'sequence2', xtype: 'widgetcolumn', widget: { xtype: 'sparklinebar' } }, { text: 'Discrete', width: 100, dataIndex: 'sequence3', xtype: 'widgetcolumn', widget: { xtype: 'sparklinediscrete' } }, { text: 'Bullet', width: 100, dataIndex: 'sequence4', xtype: 'widgetcolumn', widget: { xtype: 'sparklinebullet' } }, { text: 'Pie', width: 60, dataIndex: 'sequence5', xtype: 'widgetcolumn', widget: { xtype: 'sparklinepie' } }, { text: 'Box', width: 100, dataIndex: 'sequence6', xtype: 'widgetcolumn', widget: { xtype: 'sparklinebox' } }, { text: 'TriState', width: 100, dataIndex: 'sequence7', xtype: 'widgetcolumn', widget: { xtype: 'sparklinetristate' } }]; me.tbar = []; for (var i = 0; i < me.columns.length; i++) { me.tbar.push({ text: me.columns[i].text, enableToggle: true, pressed: true, scope: me, toggleHandler: me.onButtonToggle }); } me.callParent(); me.on({ columnshow: me.onColumnToggle, columnhide: me.onColumnToggle }); }, onButtonToggle: function(btn, pressed) { if (this.processing) { return; } this.processing = true; var header = this.headerCt.child('[text=' + btn.text + ']'); header.setVisible(pressed); this.processing = false; }, onColumnToggle: function(headerCt, header) { if (this.processing) { return; } this.processing = true; var btn = this.down('toolbar').child('[text=' + header.text + ']'); btn.setPressed(header.isVisible()); this.processing = false; }});
store
Ext.define('KitchenSink.store.Widgets', { extend: 'Ext.data.ArrayStore', model: 'KitchenSink.model.Widget', data: (function() { var result = [], i, generateSequence = function(count, min, max) { var j, sequence = []; if (count == null) { count = 20; } if (min == null) { min = -10; } if (max == null) { max = 10; } for (j = 0; j < count; j++) { sequence.push(Ext.Number.randomInt(min, max)); } return sequence; }; for (i = 0; i < 8; i++) { result.push([i + 1, 'Record ' + (i + 1), Ext.Number.randomInt(0, 100) / 100, generateSequence(), generateSequence(), generateSequence(), generateSequence(20, 1, 10), generateSequence(4, 10, 20), generateSequence(), generateSequence(20, -1, 1)]); } return result; })()});
model
Ext.define('KitchenSink.model.Widget', { extend: 'KitchenSink.model.Base', fields: [ {name: 'name'}, {name: 'progress', type: 'float'}, 'sequence1', 'sequence2', 'sequence3', 'sequence4', 'sequence5', 'sequence6', 'sequence7' ]});
0 0
- Ext.js5的小部件表格(23)
- Ext.js5表单,表格—(等级,评级)小部件(45)
- Ext.js5的数组表格(3)
- Ext.js5的分组表格(4)
- Ext.js5带子标题的标题的表格(6)
- Ext.js5的表格的排序扩展(7)
- Ext.js5的带分页的表格(10)
- Ext.js5表格—多列的表格(比fieldcontainer布局效率很多)(48)
- Ext.js5(编辑表格的内容celledit)(添加和删除的行为)(20)
- Ext.js5带工具条,按钮的表格(没有行为操作)(getReferences)(16)
- Ext.js5带过滤功能的表格(defaultListenerScope 作用域)(17)
- Ext.js5重新配置的表格(动态建立列和仓库)(18)
- Ext.js5的面板(2)
- Ext.js5的列冻结(5)
- Ext.js5的小鲱鱼分页(11)(silding pager)
- Ext.js5小鲱鱼域(表单域)(39)
- Ext.js5的能够伸展的表格(双击/选中enter键的时候有相反的行为)(21)
- Ext.js5的表格插件—展开和冻结和Ext.XTemplate(14)
- strlen和sizeof有什么区别?http://zhidao.baidu.com/link?url=G42pKaVdJNJXS5pTgv0tzrKUr6uQ4qsEI-yFy3pvIa0g6NNd
- 浅谈C++中的特殊函数初始化
- Redis和Memcache的区别总结
- 百度地图坐标转换Web服务跨域请求
- [CAQ5]使用okhttp等三方网络框架的时候出现超时错误
- Ext.js5的小部件表格(23)
- 创建用户界面线程
- Tips about how to do mornings
- Ubuntu 14.04下安装GitLab指南
- 机器学习入门阶段程序员易犯的5个错误
- Unicode字符集和多字节字符集关系
- 同步和异步的概念
- 第2章 活动的生命周期
- 探寻main函数的标准写法,以及获取main函数的参数、返回值