1

我在 extJS 4.1.1 中有一个网格面板。对于其他列,我有一个 actioncolumn(xtype:'actioncolumn')。我在该列中包含一个处理程序。当我单击它时,它可以正常工作并打开一个新窗口,其中加载了许多内容。但是当我双击该列时出现错误。提前欢迎任何帮助.......

{
        text            : 'Signature',
        menuDisabled    : true,
        sortable        : false,
        id              : 'signature',
        xtype           : 'actioncolumn',            
        width           : 60,            
        items           : [{
            icon        : "${resource(dir: 'images', file: 'ADD01003.png')}",
            tooltip     : 'Add Signature',
            scope       : this,
            handler     : function(grid, rowIndex, colIndex) {
                var records = grid.getStore().getAt(rowIndex).data,
                  fullName    = records.fullName,
                  nickName    = records.nickName,
                  salutation  = grid.getStore().getAt(rowIndex).raw.m00i012001.name,
                  searchValue = records.id ;

                  var filters    = new Array();
                  var store =Ext.data.StoreManager.lookup('S02X004001');
                  store.clearFilter(); 
                  filters.push({property:'member', value:searchValue});
                  store.loadPage(1, {
                      filters  : filters,
                      callback : function(records, options, success) {
                      var view = Ext.widget('v02x004001');
                      view.show();
                      Ext.getCmp('fullName-sv02x00400104').setValue(fullName);
                      Ext.getCmp('nickName-sv02x00400104').setValue(nickName);                      
                      Ext.getCmp('member-sv02x00400104').setValue(searchValue);
                      Ext.getCmp('salutation-sv02x00400104').setValue(salutation);
                      }
                  });
            }
        }]
    }
4

1 回答 1

0

不要复活任何僵尸,但对于在 ExtJS 4、5 或 6 中遇到相同问题的任何人,这种解决方法应该可以工作(可能需要稍微修改类名,粘贴的代码在 5.1.1 中被证明可以工作)。

诀窍是不要修改 actioncolumn,而是修复 itemdblclick 事件处理程序,可能会像这样:

listeners:
{
    itemdblclick: function(v, record, item, index, e)
    {
        var flyTarget = Ext.fly(e.target);
        if(flyTarget.hasCls('x-action-col-icon') || flyTarget.hasCls('x-grid-cell-inner-action-col'))
        {
            e.stopEvent();
            return;
        }
        //your code here
    }
}
于 2015-11-24T19:17:59.520 回答