2013-04-25 30 views
0

我又回到了另一個問題......我有一個網格頂部有一個網格面板(帶有單元格編輯),下面有一個帶有呼叫的選項卡式面板到每個標籤內的不同網格面板...Ext js - 將網格值傳遞給下面的選項卡/網格面板

我的問題是我想要獲取網格面板內的標籤更改爲用戶點擊從行到頂部面板行...我知道這可能是監聽器/處理器的事情,但我有麻煩發現,工作的例子...

首先,這裏的頂格板的代碼(在這裏我想聽衆/處理程序需要走:

var pluginExpanded = true; 
var grid = Ext.create('Ext.grid.Panel', { 
    height: 350, 
    width: 700, 
    title: 'Manufacturer URL Listing with info', 
    store: store, 
    tools: [{ 
     type: 'save', 
     tooltip: 'Save Data', 
     // hidden:true, 

     handler: function (event, toolEl, panel) { 
      // refresh logic 
      //rowEditing.cancelEdit(); 
      var sm = grid.getSelectionModel(); 

      Ext.Msg.show({ 
       title: 'Update Data', 
       msg: 'Are you sure you want to update the item information?', 
       buttons: Ext.Msg.YESNO, 
       icon: Ext.Msg.QUESTION, 
       fn: function (btn) { 
        if (btn === 'yes') { 
         store.update(); 
         //store.sync(); 
         store.load(); 
         //Ext.getCmp(grid).getView().refresh(); 
        } 
       } 
      }); 
     } 
    }], 
    columns: [{ 
     dataIndex: 'id', 
     flex: 1, 
     text: 'ID', 
     hidden: true 
    }, { 
     dataIndex: 'part_no', 
     flex: 1, 
     text: 'Part Number', 
     editor: 'textfield' 
    }, { 
     dataIndex: 'tddb_retail', 
     flex: 1.3, 
     text: 'TD Retail', 
     editor: 'textfield' 
    }, { 
     dataIndex: 'tddb_jobber', 
     flex: 1.3, 
     text: 'TD Retail', 
     editor: 'textfield' 
    }, { 
     dataIndex: 'tddb_descr', 
     flex: 1, 
     text: 'Description', 
     editor: 'textfield' 
    }, { 
     dataIndex: 'tddb_category', 
     flex: 1, 
     text: 'Category', 
     editor: 'textfield' 
    }, { 
     dataIndex: 'tddb_subcategory', 
     flex: 1, 
     text: 'Sub Category', 
     editor: 'textfield' 
    }, ], 
    forceFit: true, 
    selType: 'cellmodel', 
    plugins: [ 
    Ext.create('Ext.grid.plugin.CellEditing', { 
     clicksToEdit: 1 
    })], 

    //paging bar 
    bbar: Ext.create('Ext.PagingToolbar', { 
     store: store, 
     pagesize: 15, 
     displayInfo: true, 
     displayMsg: 'Displaying items {0} - {1} of {2}', 
     emptyMsg: "No items to display", 
    }), 

    renderTo: Ext.getBody(), 
}); 

的完整代碼(這裏包括標籤/秒的網格):

Ext.Loader.setConfig({ 
     enabled: true 
    }); 

    Ext.Loader.setPath('Ext.ux', '/include/extjs/examples/ux/'); 
    Ext.require([ 
     'Ext.grid.*', 
     'Ext.data.*', 
     'Ext.util.*', 
     'Ext.toolbar.Paging', 
     'Ext.ux.PreviewPlugin', 
     'Ext.ModelManager', 
     'Ext.tip.QuickTipManager', 
     'Ext.state.*']); 

    Ext.onReady(function() { 
     Ext.direct.Manager.addProvider(Ext.app.REMOTING_API); 
     Ext.tip.QuickTipManager.init(); 
     Ext.state.Manager.setProvider(Ext.create('Ext.state.CookieProvider')); 
     //added model inside onready 
     Ext.define('Manufacturer', { 
      extend: 'Ext.data.Model', 
      fields: ['id', 'part_no', 'tddb_retail', 'tddb_jobber', 'tddb_descr', 'tddb_category', 'tddb_subcategory'] 
     }); 

     //separated store into unique var for guaranteeRange 
     var store = Ext.create('Ext.data.Store', { 
      model: 'Manufacturer', 
      autoLoad: true, 
      pageSize: 15, 
      loadMask: true, 
      proxy: { 
       type: 'direct', 
       // extraParams:{ codes_id: 410 }, 
       api: { 
        // create: inventory.readManu, 
        read: inventory.readInventory, 
        update: inventory.updateInventory, 
        // destroy: worklist.getResults 
       }, 
       reader: { 
        type: 'json', 
        root: 'data', 
        totalProperty: 'total', 
        successProperty: 'success' 
       }, 
       writer: { 
        type: 'json', 
        writeAllFields: true, 
        encode: false, 
        root: 'data' 
       }, 
       listeners: { 
        exception: function (proxy, response, operation) { 
         Ext.MessageBox.show({ 
          title: 'REMOTE EXCEPTION', 
          msg: operation.getError(), 
          icon: Ext.MessageBox.ERROR, 
          buttons: Ext.Msg.OK 
         }); 
        } 
       }, 

      } 
     }); 

     store.getProxy().extraParams = { 
      codes_id: document.getElementById('codes_id').value 
     }; 

     //create the grid 

     var pluginExpanded = true; 
     var grid = Ext.create('Ext.grid.Panel', { 
      height: 350, 
      width: 700, 
      title: 'Manufacturer URL Listing with info', 
      store: store, 
      tools: [{ 
       type: 'save', 
       tooltip: 'Save Data', 
       // hidden:true, 

       handler: function (event, toolEl, panel) { 
        // refresh logic 
        //rowEditing.cancelEdit(); 
        var sm = grid.getSelectionModel(); 

        Ext.Msg.show({ 
         title: 'Update Data', 
         msg: 'Are you sure you want to update the item information?', 
         buttons: Ext.Msg.YESNO, 
         icon: Ext.Msg.QUESTION, 
         fn: function (btn) { 
          if (btn === 'yes') { 
           store.update(); 
           //store.sync(); 
           store.load(); 
           //Ext.getCmp(grid).getView().refresh(); 
          } 
         } 
        }); 
       } 
      }], 
      columns: [{ 
       dataIndex: 'id', 
       flex: 1, 
       text: 'ID', 
       hidden: true 
      }, { 
       dataIndex: 'part_no', 
       flex: 1, 
       text: 'Part Number', 
       editor: 'textfield' 
      }, { 
       dataIndex: 'tddb_retail', 
       flex: 1.3, 
       text: 'TD Retail', 
       editor: 'textfield' 
      }, { 
       dataIndex: 'tddb_jobber', 
       flex: 1.3, 
       text: 'TD Retail', 
       editor: 'textfield' 
      }, { 
       dataIndex: 'tddb_descr', 
       flex: 1, 
       text: 'Description', 
       editor: 'textfield' 
      }, { 
       dataIndex: 'tddb_category', 
       flex: 1, 
       text: 'Category', 
       editor: 'textfield' 
      }, { 
       dataIndex: 'tddb_subcategory', 
       flex: 1, 
       text: 'Sub Category', 
       editor: 'textfield' 
      }, ], 
      forceFit: true, 
      selType: 'cellmodel', 
      plugins: [ 
      Ext.create('Ext.grid.plugin.CellEditing', { 
       clicksToEdit: 1 
      })], 

      //paging bar 
      bbar: Ext.create('Ext.PagingToolbar', { 
       store: store, 
       pagesize: 15, 
       displayInfo: true, 
       displayMsg: 'Displaying items {0} - {1} of {2}', 
       emptyMsg: "No items to display", 
      }), 

      renderTo: Ext.getBody(), 

     }); 
     //start 

     var assetStore = Ext.create('Ext.data.Store', { 
      storeId: 'assetStore', 
      fields: ['item_id', 'link', 'filename'], 
      proxy: { 
       type: 'direct', 
       // extraParams:{ codes_id: 410 }, 
       api: { 
        read: inventory.getAssets 
       }, 
       reader: { 
        type: 'json', 
        root: 'data', 
        totalProperty: 'total', 
        successProperty: 'success' 
       }, 
      } 
     }); 
     assetStore.getProxy().extraParams = { 
      item_id: 1 
     }; 
     assetStore.load(); 

     Ext.define('assetgrid', { 
      extend: 'Ext.grid.Panel', 
      alias: 'widget.assetgrid', 
      width: 425, 
      height: 250, 
      collapsible: true, 
      store: 'assetStore', 
      columns: [{ 
       header: 'Item ID', 
       dataIndex: 'item_id' 
      }, { 
       header: 'Link', 
       dataIndex: 'link', 
       flex: 1 
      }, { 
       header: 'Filename', 
       dataIndex: 'filename' 
      }], 
      height: 200, 
      width: 400 
     }); 

     Ext.create('Ext.tab.Panel', { 
      width: 700, 
      height: 200, 
      activeTab: 0, 
      items: [{ 
       title: 'Item Assets', 
       xtype: 'assetgrid' 
      }, { 
       title: 'Item Description', 
       bodyPadding: 10, 
       html: 'link to item assets tab' 
      }, { 
       title: 'Item Epi', 
       bodyPadding: 10, 
       html: 'link to epi' 
      }, { 
       title: 'Item Package', 
       bodyPadding: 10, 
       html: 'link to package' 
      }, { 
       title: 'Item Price', 
       bodyPadding: 10, 
       html: 'link to price' 
      }, { 
       title: 'YMM Info', 
       bodyPadding: 10, 
       html: 'link to ymm' 
      } //, 
      //listview,listview,listview 
      ], 
      renderTo: Ext.getBody() 
     }); 

    }); 

任何幫助,不勝感激!我愛StackOverflow !!!

回答

0

您的問題沒有說清楚,但我想你想是這樣的:

//var tabPanel = Ext.create('Ext.tab.Panel', { 
grid.on({ 
    selectionchange: function (s, sel, e) { 
     tabPanel.setActiveTab(sel[0].data.index); 
    } 
})