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

  • 相关阅读:
    对接某款商城系统[5]商城商品多级价格处理
    利用DelegatingHandler实现Web Api 的Api key校验
    采用Lambda表达式快速实现实体模型对象转换到DTO
    驱蚊器翁
    批量测试网络关系的小脚本
    jboss7访问日志功能及使用goaccess工具分析
    jetty使用jndi数据源
    sping junit test
    Too many open files解决方案及原理
    jboss7的JAX-WS客户端
  • 原文地址:https://www.cnblogs.com/sharpest/p/7648850.html
Copyright © 2020-2023  润新知