2017-01-25 7 views
0

this page on external drag and dropをDHTMLX ’のサイトに読み込んだところ、外部のDHTMLXコンポーネントからドラッグ&ドロップできますが、サードパーティ製または自己作成コンポーネントからはドラッグアンドドロップできないと判断しています。サードパーティのコンポーネントからスケジューラタイムラインにドラッグアンドドロップ

私はモジュールjavascriptのドラッグ&ドロップが含まれている

:私は’ sが私の成分に結合することをドラッグイベントが書かれている

scheduler.attachEvent("onExternalDragIn", function (id, source, event) { 
    return true; 
}); 

ext/dhtmlxscheduler_outerdrag.js 

私はダミーのイベントハンドラを作成していました:

html

<div draggable="{{item.draggable}}" data-itemid="{{item.id}}" 
    ondragstart="drag(event, this.getAttribute('data-itemid'))"> 

JS

function drag(ev, itemId) { 
    ev.dataTransfer.setData("text", itemId); 
} 

しかし...私は’トンをドンは、スケジューラのタイムラインコンポーネントでdropを実装する方法を知っています。

私はこれを試してみました:

HTML

<div id="scheduler1" class="dhx_cal_container" ondrop="drop(event)" 
    ondragover="allowDrop(event)"> 

JS

function allowDrop(ev) { 
    ev.preventDefault(); 
} 

function drop(ev) { 
    ev.preventDefault(); 
    var data = ev.dataTransfer.getData("text"); 
} 

...しかし、私はドロップしたときにしても、そのすべてが、一般的なイベントを発生さをグリッド上の何か。私は(明らかに)どんなグリッド・セルについても情報を得ていません。私は’を落としました。どのように行/列I ’が着陸したのかを知るためにこれをコーディングする方法はありますか?

答えて

0

DHTMLX ’サイトでthis related questionの溶液が見つかりました。

私が行方不明になったすべては私のdrop方法でgetActionData()の呼び出したことが判明:

function drop(ev) { 
    ev.preventDefault(); 
    var sourceData = ev.dataTransfer.getData("text"); // what we dragged (the tree node in this case) 
    var targetData = scheduler.getActionData(ev);  // what we dropped (.date = datetime, .section = id of section) 
} 

はまた、私はスケジューラがで宣言されていることをdivdrop(event)への参照を戻すために必要な:

<div id="scheduler1" class="dhx_cal_container" style="width:100%; height:620px;" 
    ondrop="drop(event)" ondragover="allowDrop(event)"> 

そしてこのattachEventは余分です:

scheduler.attachEvent("onExternalDragIn", function (id, source, event) { 
    return true; 
}); 
関連する問題