TabPanel、TreePanel、GridPanelのいくつかのレイアウト方法でよく見られる小さな問題

9570 ワード

TabPanel
1、tabタグが一定のブラウザの幅を超えた場合、スクロールバーautoScroll:trueを自動的にロードさせる.
スクロールバーを自動に設定します.これまで効果を表示するには設定する必要があります.
enableTabScrollプロパティは真です
2、右クリックメニューを追加する:
extjsの右クリックコンポーネントTabCloseMenuを使用
{
                xtype:'tabpanel',
                id:'tabs',
                autoScroll:true,
                region:'center', // a center region is ALWAYS required for border layout
                deferredRender:false,
                activeTab:0, // first tab initially active
                items:centPortal,
                plugins:new Ext.ux.TabCloseMenu({
                    closeTabText:'      ',
                    closeOtherTabsText:'      ',
                    closeAllTabsText:'      '
                })
}

 
3、iframeから親インタフェースを操作する
3.1、得るならparentをそのまま使用する.Ext.getCmp();あるいはparent.変数名
3.2、親コンテナにコンポーネントを追加する場合は、new parentを新規作成する必要があります.Ext.panel();
 
GridPanel
1、ローカルデータページング
2、バックグラウンドインタラクティブページング
//       
      var tabs = new Ext.grid.GridPanel({
          region:'center',
          title:'      ',
          width:750,
          height:400,
          margins:{top:5,right:0,bottom:0,left:50},
          cm:cm,
          store:store,
          bbar: new Ext.PagingToolbar({
              pageSize:15,
              store:store,
              displayInfo:true,
              displayMsg:'   {0}   {1}   ,   {2}   ',
              emptyMsg:'       '
          }),
          sm:sm
      });
      store.load({params:{start:0,limit:15}});
//   start, limit           


3、gridpanelでフロントデータフォーマットを変換(レンダリング):
3.1、カラムモデルでデータフォーマットを変換する(storeの実際の値は変更しない)
  
rendererの構成パラメータは次のとおりです.value, metaData, record, rowIndex, colIndex, store
//        ,              
{header :'    ',dataIndex:'userLogType',width:150,renderer:function(value){
                    return value==1?'    ':'    '
                }}

//               ,             
renderer:function(){
                return '<div ext:qtip='+val+'></div>';
            }

//             
renderer:function (v, meta) {
   meta.attr = 'style="white-space:normal;"';
   return v;
}
     

3.2.storeでデータフォーマットを変換する(storeの値を変更した)
{name: 'rating', type: 'int', convert: function(v, rec) {
                   if (rec[3] < 0) return 2;
                   if (rec[3] < 1) return 1;
                   return 0;
               }
            }
  
3.3 gridpanelでこの関数をレンダリングし、マウスで指定した列にサムネイルを表示する
function thumbnail(data, metadata, record, rowIndex, columnIndex, store) {
        var url = store.getAt(rowIndex).get('filePath');
       //var fileName = store.getAt(rowIndex).get('fileName');
        //qtitle   qtip:  
        var img = "<img src='<%=WebConfig.WEB_DOWNLOAD%>/" + url + "' width='100%' >";
        var displayText = '<div ext:qtitle="    " ext:qtip="' + img + '" >' + data + '</div>';
        return displayText;
    }
 
4、バックグラウンドで並べ替える
バックグラウンドソートを使用する場合、urlの形式ではなくproxy形式で使用する要求方式が必要であることに注意し、remoteSortをtrueに開きます.gridpanelの列がソートを許可すると、バックグラウンドはsort、dirの対応するソートパラメータを受信します.
 
treePanel
1、ツリーノードのattributes属性
extのtreePanelにはattributesプロパティがあります.バックグラウンドに与えられた値を含むオブジェクトです.バックグラウンドの必須パラメータはId(ノードを表す)、text(ノード名)です.
注意:
その後、バックグラウンドからこのツリーノードに他のパラメータを渡すには、Id、text以外のキー値ペアを追加するだけで、そのキー値ペアをattributesプロパティに再カプセル化する必要はありません.
2、木を1本作る
function newTree(rVisible)
    {
        var tree = new Ext.tree.TreePanel({
            animate:true,//       
            useArrows:false,//      
            lines:false,//         
            autoScroll:true,
            rootVisible: rVisible,//         (             ,            ,                )
            loader: new Ext.tree.TreeLoader(),//        ,         ,   :dataUrl:'**.**'
            root:new Ext.tree.AsyncTreeNode(),//     
            containerScroll: true,//       
            enableDD:true,//         ,   false
            border: false,
            width: 250,
            height: 300,
            enableDD:true,
            listeners: {    //     ,               
                'render': function(tp){
                    tp.getSelectionModel().on('selectionchange', function(tree, node){
if(node.isLeaf) alert("I'm Leaf"); else alert("I'm root');
                        }
                    })}
            }
listeners: {    //          
                'render': function(tp){
                    tp.on(click, function(node,e){
if(node.isLeaf) alert("I'm Leaf"); else alert("I'm root');
                        }
                    })}
            }
        })
 
        return tree;
    }
 
3、バックグラウンドパスの値に基づいて木を構築する
        tree.getLoader().dataUrl = '  ';
//値をとるurl、渡された値はjsonオブジェクトの配列[{id:'1',text:'a',leaf:true},{id:'2',text:'b',children:[{text:'2.1',leaf:true}]}]
または、ツリーを構築するときに、属性dataUrlを直接指定します.
        tree.root.reload();//ツリー構造のリフレッシュ
4、フロントで一本の木を確定する
var entTree = newTree(true);
    var entBase = new Ext.tree.AsyncTreeNode({
        text:'      ',
        draggable:false,
        id:'entBase',
        children:[{
            text:'      ',
            iconCls:'nav',
            draggable:false,
            id:'entMsg',
            leaf:true
        },{
            text:'      ',
            iconCls:'nav',
            draggable:false,
            id:'entRule',
            leaf:true
        }]
    })
    entTree.setRootNode(entBase);//       
    entTree.expand(true,true);//       、       

5、ツリーの右クリックメニューの配置方式
contextMenu:new Ext.menu.Menu({
            items:[
                {
                    id:'refresh-node',
                    text:'  ',
                    iconCls:'silk-table-refresh'
                },
                {
                    id:'show-node',
                    text:'    ',
                    iconCls:'silk-table-go'
                },
                {
                    id:'add-node',
                    text:'    ',
                    iconCls:'silk-table-row-insert'
                },
                {
                    id:'edit-node',
                    text:'    ',
                    iconCls:'silk-table-edit'
                },
                {
                    id:'delete-node',
                    text:'    ',
                    iconCls:'silk-table-row-delete'
                }
            ],
            listeners:{
                itemclick:function (item) {
                    switch (item.id) {
                        case 'refresh-node':
                            refresh();
                            break;
                        case 'show-node':
                            show(this);
                            break;
                        case 'add-node':
                            add(this);
                            break;
                        case 'edit-node':
                            edit(this);
                            break;
                        case 'delete-node':
                            del();
                            break;
                    }
                }
            }
        })
       ,           
contextmenu:function (node, e) {
                node.select();
                var c = node.getOwnerTree().contextMenu;
                c.showAt(e.getXY());//    
            }