Extjs Tree编辑器 - 禁用单击以进行编辑

时间:2011-09-27 09:30:00

标签: extjs

我正在使用树编辑器。我需要树节点只有在双击时才能编辑。到目前为止,我已经完成了这个

  var tree = new Ext.tree.TreePanel({
      root: this.getChildren(),
      height: 300,
      loader: new Ext.tree.TreeLoader(),
      useArrows: true,
      autoScroll: true,
      listeners: {
          dblclick: onTreeNodeDblClick
      }
  });

  var treeEditor = new Ext.tree.TreeEditor(tree, {}, {
      cancelOnEsc: true,
      completeOnEnter: true,
      selectOnFocus: true,
      allowBlank: false,
      listeners: {
          complete: onTreeEditComplete
      }
  });

  onTreeNodeDblClick: function (n) {
      treeEditor.editNode = n;
      treeEditor.startEdit(n.ui.textNode);
  }

  onTreeEditComplete: function (treeEditor, o, n) {}

我搜索过api,发现我们在编辑网格中使用的“clicksToEdit”之类的东西却找不到任何东西。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

Ext.tree.TreeEditor将两个事件侦听器(beforeclick,dblclick)添加到树中 所以你可以从树上取消订阅

tree.on('afterrender', function() {
    tree.un('beforeclick', treeEditor.beforeNodeClick, treeEditor);
    tree.un('dblclick', treeEditor.onNodeDblClick, treeEditor);
})

答案 1 :(得分:0)

来自Ext.tree.TreePanel的API:

beforeclick : ( Node node, Ext.EventObject e )

Fires before click processing on a node. Return false to cancel the default action.

所以你可以这样做:

var tree = new Ext.tree.TreePanel({
  root: this.getChildren(),
  height: 300,
  loader: new Ext.tree.TreeLoader(),
  useArrows: true,
  autoScroll: true,
  listeners: {
      dblclick: onTreeNodeDblClick,
      beforeclick: function() { return false;}
  }

});