1

たとえば、テキストで作られたパネルのように作成する必要があります

MY PANEL

    Drag any of the items below into the editor:

    CUSTOMER
    BUSINESS_PHONE
    BUSINESS_ADDRESS

これをエディタにドラッグすると、次のように追加されます

This is an example of how [[CUSTOMER]] has improved his business. 
You may contact them directly by dialing [[BUSINESS_PHONE]].

テンプレートを作成するようなものです。これを機能させるために何を使用すればよいかわかりません..RadEditorを使用しています。エディターと統合する必要がある場合、多くの複数の場所でソリューションを使用しているため、エディターを変更できないことに注意してください。

どうもありがとうございました

4

1 に答える 1

2

私はあなたが達成しようとしていることと同様のことをしました.radEditorのそのインスタンスにコードを追加する必要があります.具体的には、OnClientLoad関数にJavascriptを追加してドロップイベントをキャッチし、データを適切に処理する必要があります. 注意が必要な部分は、カーソルの位置を維持することです。これは、HTML がドロップされる前ではなく、一度 HTML を解析する必要があるためです。

可能であれば、挿入ボタンと選択できるリスト/オブジェクトを使用し、ボタンをクリックしてカーソルに挿入することをお勧めします。実装がはるかに簡単です。

ただし、ドロップ イベントをエディターにアタッチする方法を解析していないコードを次に示します。ドラッグ アンド ドロップには RadPanelBar を使用しています。<span class="dragableItem">BusinessPhone</span>これは、エディターにドラッグ アンド ドロップされたものでも起動します。また、コンテンツを解析するときに探すことができるような、ある種のマークアップを使用することをお勧めします。

リストを単純に [[BusinessPhone]] にドラッグ アンド ドロップできれば、エレガントではありませんが、明らかに最も単純なソリューションになります。

function OnClientLoad(editor)
{

    var element = document.all ? editor.get_document().body : editor.get_document();
    //var eventHandler  = document.all ? "drop" : "dragdrop";
    var eventHandler = "drop";
    $telerik.addExternalHandler(element, eventHandler, function(e) {
        setTimeout(function() {
            contentDropped(editor);
        }, 300);
    });
//....
}


function contentDropped(editor)
{
    var content = editor.get_html();
    //parse the content of the editor  
    editor.set_html(content);
}
于 2012-04-13T13:39:21.357 に答える