首页 技术 正文
技术 2022年11月15日
0 收藏 368 点赞 3,692 浏览 3848 个字

转自:https://blog.csdn.net/chenkangwan/article/details/4748716?utm_source=blogxgwz6

1.

在EditorGriddPanel中,可以嵌入一些form的控件,而且还可以自定义渲染器.以下是我写的一个例子:

效果图:

56. EditorGridPanel和渲染器renderer的使用

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();
}

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,999
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,357
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,140
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848