2011-06-23 2 views
2

私はextjsにツリーを持っています。ドラッグ&ドロッププラグインとその機能をブラウザに追加しましたが、ドラッグ&ドロップを自分のDBに正しく送信する必要がありますか?これを行うには、私はドロップイベントを聞いて、私のバックエンドにアヤックスコールを行う必要があると信じています。 私はOKを起動しますが、ドロップまたは前のドロップは何もしないように見えるチェックチェンジイベントを持っています。ドロップまたは前のリスナーを使用しているExtJSドラッグアンドドロップツリーでは、起動しないようです。

私のツリーの設定は何ですか、私は間違っていますか?事前に

todotree = { 
    title: 'Tree Grid', 
    width: 600, 
    height: 400, 
    viewConfig: { 
     plugins: { 
      ptype: 'treeviewdragdrop' 
     } 
    }, 
    store: new Ext.data.TreeStore({ 
     storeId: 'treestore', 
     fields: [{ 
      name: 'actionTitle', 
      type: 'string' 
     }], 
     proxy: { 
      type: 'ajax', 
      url: 'index.php/todo/listtree', 
      reader: 'json' 
     } 
    }), 
    rootVisible: false, 
    columns: [ 
    { 
     xtype: 'treecolumn', 
     text: 'Title', 
     flex: 3, 
     dataIndex: 'actionTitle' 
    }], 
    listeners: { 
     checkchange: function(node, checked){ 
      Ext.Ajax.request({ 
       url: 'index.php/todo/togglecheck/' + node.data.recordId + '/' + checked, 
       success: function() {} 
      }); 
     }, 
     drop: function(){ alert("drop") }, 
     beforedrop: function(){ alert("beforedrop") } 
    } 
} 

おかげ

EDIT: 私も無駄にこの設定を試してみました。私はこれがどのように機能するのかを理解しているとは思わない。

... 
    beforedrop: function(node, data, overModel, dropPosition, dropFunction){ 
     alert("beforedrop"); 

     dropFunction = function(){ 
      alert('dropFunction'); 
     }; 
    } 
... 

答えて

5

これらのイベントはTreeViewによって発生し、パネル上にリスナーを追加しています。これはうまくいくはずです:

todotree = {... 
    viewConfig: { 
     listeners: { 
      beforedrop: function() {} 
     } 
    } 
} 
+0

ありがとうございます。それはまさに私が必要としたものでした。 – Chris

+0

これは、TreeStoreではなく、Panel内に移動する必要があります。答えの文言は、少し理解できませんでした。 – relipse

+0

'node'パラメータ(' previousdrop(node、data、overModel、dropPosition、dropFunction、eOpts) ')は私にHTMLタグを与えます('

')。移動したTreeNodeを取得するにはどうすればよいですか? –

関連する問題