56. EditorGridPanel和渲染器renderer的使用
转自:https://blog.csdn.net/chenkangwan/article/details/4748716?utm_source=blogxgwz6
1.
在EditorGriddPanel中,可以嵌入一些form的控件,而且还可以自定义渲染器.以下是我写的一个例子:
效果图:

Ext.onReady(function() {
createViewPoint();
createTreePanel();
// createGridPanel();
});
function createViewPoint() {
var borderPanel = new Ext.Viewport({
renderTo : Ext.getBody(),
layout : 'border',
items : [{
region : 'north',
autoHeight : true,
border : false
}, {
id : 'treePanel',
region : 'west',
collapsable : true,
title : '主菜单',
width : '200'
}, {
region : 'south',
title : 'Title for Panel',
collapsible : true,
html : 'Information goes here',
split : true,
height : 100,
minHeight : 100
}, {
id : 'QQPanel',
region : 'center',
xtype : 'tabpanel', // TabPanel itself has no title
items : [{
title : '主页'
}],
activeTab : 0
}]
});
}
function createTreePanel() {
// create rootNode
var rootNode = new Ext.tree.TreeNode({
text : '主菜单'
});
rootNode.appendChild(new Ext.tree.TreeNode({
text : '子节点一'
}));
rootNode.appendChild(new Ext.tree.TreeNode({
text : '子节点二'
}))
var treePanel = new Ext.tree.TreePanel({
renderTo : Ext.getCmp('treePanel').body,
root : rootNode,
border : false,
listeners : {
'click' : function(node, e) {
createGridPanel(node);
}
}
});
}
function createGridPanel(node) {
if (node.text != '子节点一') {
return;
}
var gridPanelTab = Ext.getCmp('gridPanelId');
if (typeof gridPanel != 'undefined') {
Ext.getCmp('QQPanel').activate(gridPanelTab);
}
// 首先建立一个store
var simpStore = new Ext.data.JsonStore({
url : '/extDemo/getData',
fields : ['age', {
name : 'birthday',
type : 'date',
mapping : 'birthday.time',
dateFormat : 'time'
}, 'id', 'name', 'sex'],
waitMsg : '数据加载中...'
});
simpStore.load();
// 建立一个grid显示的模型
var gridMode = new Ext.grid.ColumnModel([{
header : '用户id',
dataIndex : 'id'
}, {
header : '用户名',
dataIndex : 'name',
editor : new Ext.form.TextField({
allowBlank : false
})
}, {
header : '年龄',
dataIndex : 'age',
editor : new Ext.form.TextField({
allowBlank : false
})
}, {
header : '生日',
dataIndex : 'birthday',//下面加入日期控件
editor : new Ext.form.DateField({
allowBlank : false,
format : 'Y-m-d'
}),
renderer : Ext.util.Format.dateRenderer('Y-m-d')//日期格式渲染器
}, {
header : '性别',
dataIndex : 'sex',
editor : new Ext.form.ComboBox({
name : 'sex',
forceSelection : true,
store : new Ext.data.SimpleStore({
fields : ['value', 'text'],
data : [[0, '女'], [1, '男']]
}),
mode : 'local',
valueField : 'value',
displayField : 'text',
triggerAction : 'all',
readOnly : true
}),
renderer : function(v){//自己定义的渲染器,O(∩_∩)O哈哈~
if (v == 0){
return '女';
}
return '男';
}
}]);
// 根据以上两个基础搭建一个gridpanel
var gridPanel = new Ext.grid.EditorGridPanel({
store : simpStore,
colModel : gridMode,
width : 530,
height : 200,
buttons : [{
text : '提交',
handler : function() {
commit();
}
}]
});
Ext.getCmp('QQPanel').add({
id : 'gridPanelId',
title : '数据页',
items : [gridPanel]
}).show();
// 以下是操作一个注册右键事件,并加入右键菜单
var rigthClickMenu = new Ext.menu.Menu({
items : [{
text : '复制',
handler : function() {
alert('hh');
}
}, {
text : '粘贴'
}]
});
gridPanel.on('rowcontextmenu', function(gridPanel, rowIndex, e) {
e.preventDefault();
rigthClickMenu.showAt(e.getXY());
});
}
// 以下是事件处理方法区,随便测试用而已,===============================================================================
function commit(){
var combox = new Ext.form.ComboBox({
fieldLabel : '性别',
name : 'sext',
store : new Ext.data.SimpleStore({
fields : ['text','value'],
data : [['男','0'],['女','1']]
}),
displayField : 'text',
valueField : 'value',
readOnly : true,
mode : 'local',
triggerAction : 'all'
});
var win = new Ext.Window({
width : '200',
items : [combox]
});
win.show();
}
56. EditorGridPanel和渲染器renderer的使用的更多相关文章
- Django-rest-framework 接口实现 分页:(Pagination) 解析器(Parser) 渲染器(renderer)
分页:(Pagination) rest_framework 中已经定义好了 3 种 分页模式 from rest_framework.pagination import PageNumberPagi ...
- 基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer
假如要渲染一个纯色矩形在窗口上,应该怎么做? 先确定顶点的格式,一个顶点应该包含位置信息 vec3 以及颜色信息 vec4,所以顶点的结构体定义可以这样: struct Vertex { Vec3 p ...
- 29.渲染器Renderer
什么是渲染器 渲染器就是将服务器生成的数据格式转为http请求的格式 渲染器触发及参数配置 在DRF配置参数中,可用的渲染器作为一个类的列表进行定义 但与解析器不同的是,渲染器的列表是有顺 ...
- CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL
CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL +BIT祝威+悄悄在此留下版了个权的信息说: 开始 本文用step by step的方式,讲述如何使 ...
- three.js引擎基础知识—摄像机、场景及渲染器
一.three.js采用右手坐标系: x轴正方向向右,y轴正方向向上,z轴由屏幕从里向外,如下图右: 二.3D编程三要素:场景.渲染器.摄像机 1.场景:创建的物品和模型都需放入场景中 threejs ...
- 基于OpenGL编写一个简易的2D渲染框架-08 重构渲染器-整体架构
事实上,前面编写的渲染器 Renderer 非常简陋,虽然能够进行一些简单的渲染,但是它并不能满足我们的要求. 当渲染粒子系统时,需要开启混合模式,但渲染其他顶点时却不需要开启混合模式.所以同时渲染粒 ...
- 拖尾渲染器 Trail Renderer
拖尾渲染器(Trail Renderer)用于制作跟在场景中的物体后面的拖尾效果来代表它们在到处移动. 必须给Materials一个材质渲染器设置的Colors才有效. 展示自己的一个demo...
- 【three.js详解之二】渲染器篇
[three.js详解之二]渲染器篇 本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...
- Unity 5.4大赞:HTC Vive经典The lab渲染器开源
HTC Vive提供了一个不错的免费VR demo,最近1周仔细体验了一番. 仔细看了其安装文件,竟然是Unity 5.4beta版本(通过查log,知道Valve公司用的是最新的5.4.0b11版本 ...
随机推荐
- BZOJ 1176: [Balkan2007]Mokia KDtree
Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin), ...
- TWaver 3D应用于大型数据中心(续)
在2014年11月份,我们当时发了一篇有关TWaver HTML5 3D应用于大型数据中心的文章,该blog比较详细的描述一些常用的功能的实现方法,比如:动态添加机柜,告警,温度,湿度等相关的功能的具 ...
- webpack之webpack-dev-server 与 webpack-hot-server
最近在弄框架,用到了webpack打包,当然不可避免的遇到了开发实际问题.在实际开发中,我们不可能改一个文件,就去构建一次,于是想到了实时更新.查看webpack,看到了webpack-dev-ser ...
- 一起看看 scrollHeight,clientHeight,offsetHeight,scrollTop是个啥
scrollHeight最终数值的组成: var scrollHeight = currentElementContent.height +currentElement.paddingTop+curr ...
- 我的ACM技能框架(自用)
每次接触到新的知识就把它名字记下来,留给以后当纪念 2018.11 已经学会的 滚动数组,前缀和优化 对多维数组在空间复杂度上的降维优化 最长上升子序列 LIS问题,动态规划递推解决 最长不下 ...
- 洛谷—— P1450 [HAOI2008]硬币购物
P1450 [HAOI2008]硬币购物 硬币购物一共有$4$种硬币.面值分别为$c1,c2,c3,c4$.某人去商店买东西,去了$tot$次.每次带$di$枚$ci$硬币,买$si$的价值的东西.请 ...
- swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?
date: 2018-8-01 14:22:17title: swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?description: 阅读 sowft 框架源码, 了解 sowf ...
- lastpass密码管理工具使用教程
现在移动互联网发展异常空气,无论访问哪个平台或者网站必须要注册账号,日子久了就会发现最痛苦的就是记住这些网站的密码.因为我们不可能将所有的网站都是设置同样的的账号密码,因为国内网站用户数据库被泄露的事 ...
- LINUX-磁盘空间
df -h 显示已经挂载的分区列表 ls -lSr |more 以尺寸大小排列文件和目录 du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间' du -sk * | sort -rn ...
- rsync+sersync自动同步备份数据
一.为什么要用Rsync+sersync架构?1.sersync是基于Inotify开发的,类似于Inotify-tools的工具2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修 ...