转自: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的使用的更多相关文章

  1. Django-rest-framework 接口实现 分页:(Pagination) 解析器(Parser) 渲染器(renderer)

    分页:(Pagination) rest_framework 中已经定义好了 3 种 分页模式 from rest_framework.pagination import PageNumberPagi ...

  2. 基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer

    假如要渲染一个纯色矩形在窗口上,应该怎么做? 先确定顶点的格式,一个顶点应该包含位置信息 vec3 以及颜色信息 vec4,所以顶点的结构体定义可以这样: struct Vertex { Vec3 p ...

  3. 29.渲染器Renderer

    什么是渲染器     渲染器就是将服务器生成的数据格式转为http请求的格式   渲染器触发及参数配置 在DRF配置参数中,可用的渲染器作为一个类的列表进行定义 但与解析器不同的是,渲染器的列表是有顺 ...

  4. CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL

    CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL +BIT祝威+悄悄在此留下版了个权的信息说: 开始 本文用step by step的方式,讲述如何使 ...

  5. three.js引擎基础知识—摄像机、场景及渲染器

    一.three.js采用右手坐标系: x轴正方向向右,y轴正方向向上,z轴由屏幕从里向外,如下图右: 二.3D编程三要素:场景.渲染器.摄像机 1.场景:创建的物品和模型都需放入场景中 threejs ...

  6. 基于OpenGL编写一个简易的2D渲染框架-08 重构渲染器-整体架构

    事实上,前面编写的渲染器 Renderer 非常简陋,虽然能够进行一些简单的渲染,但是它并不能满足我们的要求. 当渲染粒子系统时,需要开启混合模式,但渲染其他顶点时却不需要开启混合模式.所以同时渲染粒 ...

  7. 拖尾渲染器 Trail Renderer

    拖尾渲染器(Trail Renderer)用于制作跟在场景中的物体后面的拖尾效果来代表它们在到处移动. 必须给Materials一个材质渲染器设置的Colors才有效. 展示自己的一个demo...

  8. 【three.js详解之二】渲染器篇

    [three.js详解之二]渲染器篇   本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...

  9. Unity 5.4大赞:HTC Vive经典The lab渲染器开源

    HTC Vive提供了一个不错的免费VR demo,最近1周仔细体验了一番. 仔细看了其安装文件,竟然是Unity 5.4beta版本(通过查log,知道Valve公司用的是最新的5.4.0b11版本 ...

随机推荐

  1. 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"

    14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误" One of the configured ...

  2. 最长上升子序列(动态规划递推,LIS)

    1759:最长上升子序列 题目: 总时间限制: 2000ms 内存限制: 65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的 ...

  3. 子集和问题 - 回溯&搜索

    题目地址:http://www.51cpc.com/web/problem.php?id=4264 其实一看到这道题我就想到了01背包,但是卡死在了如何顺序输出: 个人人为回溯本身就会用到搜索,像是充 ...

  4. (C/C++学习)16.函数指针

    说明:函数指针,顾名思义就是指向函数的指针.C/C++中函数名的本质其实就是一段代码段空间的首地址. 1.定义 如下的 pf 就是一个函数指针,指向所有返回类型为 int,并带有两个 const in ...

  5. 服务器做ssh免秘钥登陆

    集群内服务器做非root用户免秘钥登陆:1.node1新建用户abc1,制作公钥.私钥(一路回车键即可)ssh-keygen –t rsa将自动在/home/abc1/.ssh/目录下创建公私钥文件如 ...

  6. static private 与 final 的用法总结

    1.static表示静态.他是属于类的.可以在本身类里直接调用,或在其它类里用类名.方法名调用.不加static表示是实例的方法,必须用实例来调用.在本类里也一样,必须用实例调用 2.private是 ...

  7. 洛谷 4364 [九省联考2018]IIIDX

    [题解] 一眼可以想到一个类似二叉树后序遍历的贪心做法,然而这个做法在有相同数字的情况下是错误的.最简单的反例就是n=4,d={1,1,1,2},正解是1,1,2,1,而贪心是1,1,1,2. 所以这 ...

  8. visioStudio常见问题

    问题一: 在做项目时候,使用VisioStudio 2008,一不小心将设置恢复到了原始,一直找不到需要的东西. 比如生成方式“debug”和“Release”选择框没有.一些图标也没有. 经过不断的 ...

  9. 洛谷——P1720 月落乌啼算钱

    题目背景 (本道题目木有以藏歌曲……不用猜了……) <爱与愁的故事第一弹·heartache>最终章. 吃完pizza,月落乌啼知道超出自己的预算了.为了不在爱与愁大神面前献丑,只好还是硬 ...

  10. @Autowired中无法注入RestTemplate的问题

    1.在启动类中添加 @Beanpublic RestTemplate restTemplate(){ return new RestTemplate();} 即可解决无法注入RestTemplate的 ...