2015-01-21 20 views

回答

1

我想看看这里的文档http://dev.sencha.com/deploy/ext-2.3.0/docs/

然后我会看看这既暴露和extend方法override在内线单对象所需的信息或链接这应该允许你做你以后的事情。

这是使用从演示的extend方法在这里http://dev.sencha.com/deploy/yui-ext/examples/grid/array-grid.html 发现这个父页面http://dev.sencha.com/deploy/yui-ext/examples/samples.html

在这里,在下面的代码的例子,我延长Ext.grid.GridPanel使MyGridPanel然后实现了所谓的新方法然后当网格被点击时它会提示消息。

Ext.onReady(function() { 

    // NOTE: This is an example showing simple state management. During development, 
    // it is generally best to disable state management as dynamically-generated ids 
    // can change across page loads, leading to unpredictable results. The developer 
    // should ensure that stable state ids are set for stateful components in real apps. 
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); 

    var myData = [ 
     ['3m Co', 71.72, 0.02, 0.03, '9/1 12:00am'], 
     ['Alcoa Inc', 29.01, 0.42, 1.47, '9/1 12:00am'], 
     ['Altria Group Inc', 83.81, 0.28, 0.34, '9/1 12:00am'], 
     ['American Express Company', 52.55, 0.01, 0.02, '9/1 12:00am'], 
     ['American International Group, Inc.', 64.13, 0.31, 0.49, '9/1 12:00am'], 
     ['AT&T Inc.', 31.61, -0.48, -1.54, '9/1 12:00am'], 
     ['Boeing Co.', 75.43, 0.53, 0.71, '9/1 12:00am'], 
     ['Caterpillar Inc.', 67.27, 0.92, 1.39, '9/1 12:00am'], 
     ['Citigroup, Inc.', 49.37, 0.02, 0.04, '9/1 12:00am'], 
     ['E.I. du Pont de Nemours and Company', 40.48, 0.51, 1.28, '9/1 12:00am'], 
     ['Exxon Mobil Corp', 68.1, -0.43, -0.64, '9/1 12:00am'], 
     ['General Electric Company', 34.14, -0.08, -0.23, '9/1 12:00am'], 
     ['General Motors Corporation', 30.27, 1.09, 3.74, '9/1 12:00am'], 
     ['Hewlett-Packard Co.', 36.53, -0.03, -0.08, '9/1 12:00am'], 
     ['Honeywell Intl Inc', 38.77, 0.05, 0.13, '9/1 12:00am'], 
     ['Intel Corporation', 19.88, 0.31, 1.58, '9/1 12:00am'], 
     ['International Business Machines', 81.41, 0.44, 0.54, '9/1 12:00am'], 
     ['Johnson & Johnson', 64.72, 0.06, 0.09, '9/1 12:00am'], 
     ['JP Morgan & Chase & Co', 45.73, 0.07, 0.15, '9/1 12:00am'], 
     ['McDonald\'s Corporation', 36.76, 0.86, 2.40, '9/1 12:00am'], 
     ['Merck & Co., Inc.', 40.96, 0.41, 1.01, '9/1 12:00am'], 
     ['Microsoft Corporation', 25.84, 0.14, 0.54, '9/1 12:00am'], 
     ['Pfizer Inc', 27.96, 0.4, 1.45, '9/1 12:00am'], 
     ['The Coca-Cola Company', 45.07, 0.26, 0.58, '9/1 12:00am'], 
     ['The Home Depot, Inc.', 34.64, 0.35, 1.02, '9/1 12:00am'], 
     ['The Procter & Gamble Company', 61.91, 0.01, 0.02, '9/1 12:00am'], 
     ['United Technologies Corporation', 63.26, 0.55, 0.88, '9/1 12:00am'], 
     ['Verizon Communications', 35.57, 0.39, 1.11, '9/1 12:00am'], 
     ['Wal-Mart Stores, Inc.', 45.45, 0.73, 1.63, '9/1 12:00am'] 
    ]; 

    // example of custom renderer function 
    function change(val) { 
     if (val > 0) { 
      return '<span style="color:green;">' + val + '</span>'; 
     } else if (val < 0) { 
      return '<span style="color:red;">' + val + '</span>'; 
     } 
     return val; 
    } 

    // example of custom renderer function 
    function pctChange(val) { 
     if (val > 0) { 
      return '<span style="color:green;">' + val + '%</span>'; 
     } else if (val < 0) { 
      return '<span style="color:red;">' + val + '%</span>'; 
     } 
     return val; 
    } 

    // create the data store 
    var store = new Ext.data.SimpleStore({ 
     fields: [{ 
      name: 'company' 
     }, { 
      name: 'price', 
      type: 'float' 
     }, { 
      name: 'change', 
      type: 'float' 
     }, { 
      name: 'pctChange', 
      type: 'float' 
     }, { 
      name: 'lastChange', 
      type: 'date', 
      dateFormat: 'n/j h:ia' 
     }] 
    }); 
    store.loadData(myData); 

    MyGridPanel = Ext.extend(Ext.grid.GridPanel, { 
     constructor: function (config) { 
      // Your preprocessing here 
      MyGridPanel.superclass.constructor.apply(this, arguments); 
      // Your postprocessing here 
     }, 

     yourMethod: function() { 
      alert('this is a new method'); // etc. 
     } 
    }); 
    // create the Grid 
    var grid = new MyGridPanel({ 
     store: store, 
     columns: [{ 
      id: 'company', 
      header: "Company", 
      width: 160, 
      sortable: true, 
      dataIndex: 'company' 
     }, { 
      header: "Price", 
      width: 75, 
      sortable: true, 
      renderer: 'usMoney', 
      dataIndex: 'price' 
     }, { 
      header: "Change", 
      width: 75, 
      sortable: true, 
      renderer: change, 
      dataIndex: 'change' 
     }, { 
      header: "% Change", 
      width: 75, 
      sortable: true, 
      renderer: pctChange, 
      dataIndex: 'pctChange' 
     }, { 
      header: "Last Updated", 
      width: 85, 
      sortable: true, 
      renderer: Ext.util.Format.dateRenderer('m/d/Y'), 
      dataIndex: 'lastChange' 
     }], 
     stripeRows: true, 
     autoExpandColumn: 'company', 
     height: 350, 
     width: 600, 
     title: 'Array Grid' 
    }); 

    grid.render('grid-example'); 
    grid.on('click', function (e) { 
     console.log(e, this.yourMethod()); 
    }); 
}); 

演示:http://jsfiddle.net/robschmuecker/84Lmu21L/

+0

如果我创建使用VAR MyGrid =新Ext.grid.GridPanel({...})网格面板,现在我想用扩展这个MyGrid。我已经试过Ext.extend(MyGrid,{....}),但它没有解决..你能否请提供信息如何使用它与一个例子 – user2940383 2015-01-22 06:57:09

+0

我已经用例子更新了答案 – 2015-01-22 09:06:49

+0

非常感谢信息。我知道了:) – user2940383 2015-01-22 09:19:12