在Ext.Viewport 中定义了一个Ext.Panel,然后再Ext.Panel中,定义了三个gridpanel,通过下面代码捕获Click事件,
listeners: {render: function(panel) {panel.el.on('click', this.onClick, this);}},
scope: this,
onClick: function onClick(event, target, options) {
  alert(target.id); 
}比较笨的方法,通过显示target.id(类似Ext-gen40),然后再程序中写死。通过switch case去区分对应的gridpanel,
但是我希望,通过target.id 去获得对应gridpanel(例如可以通过创建gridpanel的时候写的id:'dataCurveGrid')
注释通过下面函数可以列举出我所有的gridpanel:   var grids = viewPort.findByType("grid");
  var arr = [];
  for(var i=0;i<grids.length;i++){
     arr.push(grids[i]["id"]);
  }
  alert(arr.toString());

解决方案 »

  1.   

    listeners: {render: function(panel) {panel.el.on('click', this.onClick, this);}},
                scope: this,
                onClick: function onClick(event, target, options) {
                    var grid=Ext.getCmp(target.id); /////////
                    }
      

  2.   

    onClick换成如下:
    onClick: function (event, target, options) {
             var grid =Ext.getCmp(target.id); 
     }
      

  3.   

    提示Ext.getCmp(target.id) is undefined
    target.id返回的是ext-gen40 之类,和我之前定义的id:'dataCurveGrid' 不一致
      

  4.   

    因为你是为整个panle加的click事件,点击到的不一定就是grid最外层的div,id一般不会正确。可以用Ext.get(target.id)获取el然后用domquery的方法查找父容器包含指定css选择器的查找到grid,不过这个方法很笨。
      

  5.   

    同样的错误
    Ext.getCmp(target.id) is undefined