jQuery EasyUI データグリッドとツリープラグイン -Tree ツリー


jQuery EasyUI 插件jQuery EasyUI プラグイン

$.fn.tree.defaults を使用してデフォルトの defaults を上書きします。

ツリー(tree)は、Webページ上で階層データをツリー構造で表示します。ユーザーに展開、折りたたみ、ドラッグ&ドロップ、編集、非同期読み込み機能を提供します。

依存

  • draggable
  • droppable

使用法

ツリー(tree)は <ul> 要素内に定義されます。このマークアップはリーフノードと子ノードを定義できます。ノードは ul リスト内の <li> 要素になります。以下に、ul 要素内にネストされたツリーノードを作成するために使用される要素を示します。

<ul id="tt" class="easyui-tree">
    <li>
        <span>Folder</span>
        <ul>
            <li>
                <span>Sub Folder 1</span>
                <ul>
                    <li><span><a href="../index.html">File 11</a></span></li>
                    <li><span>File 12</span></li>
                    <li><span>File 13</span></li>
                </ul>
            </li>
            <li><span>File 2</span></li>
            <li><span>File 3</span></li>
        </ul>
    </li>
    <li><span>File21</span></li>
</ul>

ツリー(Tree)は空の <ul> 要素内に定義し、javascript を使用してデータを読み込むこともできます。

<ul id="tt"></ul>
$('#tt').tree({
    url:'tree_data.json'
});

loadFilter を使用して、ASP.NET Web サービスからの json データを処理します。

$('#tt').tree({
    url: ...,
    loadFilter: function(data){
        if (data.d){
            return data.d;
        } else {
            return data;
        }
    }
});

ツリーのデータ形式(Tree Data Format)

各ノードには次の属性を含めることができます:

  • id: ノードの id。リモートデータを読み込む際に重要です。
  • text: 表示するノードのテキスト。
  • state: ノードの状態。'open' または 'closed'。デフォルトは 'open' です。'closed' に設定すると、そのノードには子ノードがあり、リモートサイトから子ノードが読み込まれます。
  • checked: ノードが選択されているかどうかを示します。
  • attributes: ノードに追加するカスタム属性。
  • children: 子ノードを定義するノード配列。

例:

[{
    "id":1,
    "text":"Folder1",
    "iconCls":"icon-save",
    "children":[{
        "text":"File1",
        "checked":true
    },{
        "text":"Books",
        "state":"open",
        "attributes":{
            "url":"/demo/book/abc",
            "price":100
        },
        "children":[{
            "text":"PhotoShop",
            "checked":true
        },{
            "id": 8,
            "text":"Sub Bookds",
            "state":"closed"
        }]
    }]
},{
    "text":"Languages",
    "state":"closed",
    "children":[{
        "text":"Java"
    },{
        "text":"C#"
    }]
}]

非同期ツリー

ツリーは組み込みの非同期読み込みモードをサポートしているため、ユーザーは空のツリーを作成し、要件に応じてツリーを非同期に埋めるための JSON データを動的に返すサーバーサイドを指定できます。以下は例です:

<ul class="easyui-tree" data-options="url:'get_data.php'"></ul>

ツリーは URL 'get_data.php' を介して読み込まれます。子ノードは親ノードの状態に応じて読み込まれます。閉じたノードを展開するとき、そのノードに子ノードが読み込まれていない場合、定義された URL を介してサーバーにノードの id 値を 'id' という名前の http リクエストパラメータとして送信し、子ノードを取得します。

サーバーから返されるデータを見てください:

[{
    "id": 1,
    "text": "Node 1",
    "state": "closed",
    "children": [{
        "id": 11,
        "text": "Node 11"
    },{
        "id": 12,
        "text": "Node 12"
    }]
},{
    "id": 2,
    "text": "Node 2",
    "state": "closed"
}]

ノード 1 とノード 2 は閉じています。ノード 1 を展開すると、その子ノードが直接表示されます。ノード 2 を展開すると、サーバーに value(2) が送信され、子ノードが取得されます。

本チュートリアルの非同期ツリーの作成要件に応じてツリーのデータを返すサーバーコードの記述方法を示しています。

属性

名前 タイプ 説明 デフォルト値
url string リモートデータを取得する URL。 null
method string データを取得する http メソッド(method)。 post
animate boolean ノードの展開/折りたたみ時にアニメーション効果を表示するかどうかを定義します。 false
checkbox boolean 各ノードの前にチェックボックスを表示するかどうかを定義します。 false
cascadeCheck boolean カスケードチェックを行うかどうかを定義します。 true
onlyLeafCheck boolean リーフノードの前にのみチェックボックスを表示するかどうかを定義します。 false
lines boolean ツリーのラインを表示するかどうかを定義します。 false
dnd boolean ドラッグ&ドロップを有効にするかどうかを定義します。 false
data array 読み込むノードデータ。
$('#tt').tree({
    data: [{
        text: 'Item1',
        state: 'closed',
        children: [{
            text: 'Item11'
        },{
            text: 'Item12'
        }]
    },{
        text: 'Item2'
    }]
});
null
formatter function(node) ノードテキストの表示方法を定義します。
コード例:
$('#tt').tree({
    formatter:function(node){
        return node.text;
    }
});
loader function(param,success,error) リモートサーバーからデータを読み込む方法を定義します。false を返すとアクションがキャンセルされます。この関数には次のパラメータがあります:
param: リモートサーバーに渡すパラメータオブジェクト。
success(data): データの取得が成功したときに呼び出されるコールバック関数。
error(): データの取得が失敗したときに呼び出されるコールバック関数。
json loader
loadFilter function(data,parent) 表示するフィルタリングされたデータを返します。データは標準のツリー形式で返されます。この関数には次のパラメータがあります:
data: 読み込む生データ。
parent: 親ノードを表す DOM オブジェクト。

イベント

多くのイベントのコールバック関数には 'node' パラメータが必要です。これには次の属性が含まれます:

  • id: ノードにバインドされる識別値。
  • text: 表示するテキスト。
  • iconCls: アイコンを表示するための css class。
  • checked: ノードが選択されているかどうか。
  • state: ノードの状態。'open' または 'closed'。
  • attributes: ノードにバインドされるカスタム属性。
  • target: ターゲットの DOM オブジェクト。
名前 パラメータ 説明
onClick node ユーザーがノードをクリックしたときにトリガーされます。コード例:
$('#tt').tree({
    onClick: function(node){
        alert(node.text);  // alert node text property when clicked
    }
});
onDblClick node ユーザーがノードをダブルクリックしたときにトリガーされます。
onBeforeLoad node, param データ読み込みリクエストが送信される前にトリガーされます。false を返すと読み込みアクションがキャンセルされます。
onLoadSuccess node, data データの読み込みが成功したときにトリガーされます。
onLoadError arguments データの読み込みが失敗したときにトリガーされます。arguments パラメータは jQuery.ajax の 'error' 関数と同じです。
onBeforeExpand node ノードが展開される前にトリガーされます。false を返すと展開アクションがキャンセルされます。
onExpand node ノードが展開されたときにトリガーされます。
onBeforeCollapse node ノードが折りたたまれる前にトリガーされます。false を返すと折りたたみアクションがキャンセルされます。
onCollapse node ノードが折りたたまれたときにトリガーされます。
onBeforeCheck node, checked ユーザーがチェックボックスをクリックする前にトリガーされます。false を返すとその選択アクションがキャンセルされます。このイベントはバージョン 1.3.1 以降で使用できます。
onCheck node, checked ユーザーがチェックボックスをクリックしたときにトリガーされます。
onBeforeSelect node ノードが選択される前にトリガーされます。false を返すと選択アクションがキャンセルされます。
onSelect node ノードが選択されたときにトリガーされます。
onContextMenu e, node ノードを右クリックしたときにトリガーされます。コード例:
// right click node and then display the context menu
$('#tt').tree({
    onContextMenu: function(e, node){
        e.preventDefault();
        // select the node
        $('#tt').tree('select', node.target);
        // display context menu
        $('#mm').menu('show', {
            left: e.pageX,
            top: e.pageY
        });
    }
});

// the context menu is defined as below:
<div id="mm" class="easyui-menu" style="width:120px;">
    <div onclick="append()" data-options="iconCls:'icon-add'">Append</div>
    <div onclick="remove()" data-options="iconCls:'icon-remove'">Remove</div>
</div>
onBeforeDrag node ノードのドラッグが開始されるときにトリガーされます。false を返すとドラッグが禁止されます。このイベントはバージョン 1.3.2 以降で使用できます。
onStartDrag node ノードのドラッグが開始されたときにトリガーされます。このイベントはバージョン 1.3.2 以降で使用できます。
onStopDrag node ノードのドラッグが停止したときにトリガーされます。このイベントはバージョン 1.3.2 以降で使用できます。
onDragEnter target, source ノードがドロップ可能なターゲットノードにドラッグされたときにトリガーされます。false を返すとドロップが禁止されます。
target: ドロップされるターゲットノード要素。
source: ドラッグされているソースノード。
このイベントはバージョン 1.3.2 以降で使用できます。
onDragOver target, source ノードがドロップ可能なターゲットノードの上にドラッグされたときにトリガーされます。false を返すとドロップが禁止されます。
target: ドロップされるターゲットノード要素。
source: ドラッグされているソースノード。
このイベントはバージョン 1.3.2 以降で使用できます。
onDragLeave target, source ノードがドロップ可能なターゲットノードからドラッグアウトされたときにトリガーされます。
target: ドロップされるターゲットノード要素。
source: ドラッグされているソースノード。
このイベントはバージョン 1.3.2 以降で使用できます。
onBeforeDrop target,source,point ノードがドロップされる前にトリガーされます。false を返すとドロップが禁止されます。
target: ドロップのターゲットノードである DOM オブジェクト。
source: ソースノード。
point: ドロップ操作を表します。可能な値は、'append'、'top'、'bottom' です。
このイベントはバージョン 1.3.2 以降で使用できます。
onDrop target,source,point ノードがドロップされたときにトリガーされます。 target: ドロップのターゲットノードである DOM オブジェクト。
source: ソースノード。
point: ドロップ操作を表します。可能な値は、'append'、'top'、'bottom' です。
onBeforeEdit node ノードを編集する前にトリガーされます。
onAfterEdit node ノードを編集した後にトリガーされます。
onCancelEdit node 編集アクションがキャンセルされたときにトリガーされます。

メソッド

名前 パラメータ 説明
options none ツリーのオプション(options)を返します。
loadData data ツリーのデータを読み込みます。
getNode target 指定されたノードオブジェクトを取得します。
getData target 指定されたノードデータを、その子ノードを含めて取得します。
reload target ツリーのデータを再読み込みします。
getRoot none ルートノードを取得し、ノードオブジェクトを返します。
getRoots none ルートノードを取得し、ノード配列を返します。
getParent target 親ノードを取得します。target パラメータはノードの DOM オブジェクトを表します。
getChildren target 子ノードを取得します。target パラメータはノードの DOM オブジェクトを表します。
getChecked state 選択されたノードを取得します。状態の指定可能な値は、'checked'、'unchecked'、'indeterminate' です。状態が指定されていない場合は、'checked' ノードを返します。
コード例:
var nodes = $('#tt').tree('getChecked');    // get checked nodes
var nodes = $('#tt').tree('getChecked', 'unchecked');    // get unchecked nodes
var nodes = $('#tt').tree('getChecked', 'indeterminate');    // get indeterminate nodes
var nodes = $('#tt').tree('getChecked', ['checked','indeterminate']);    // get checked and indeterminate nodes
getSelected none 選択されたノードを取得して返します。選択されたノードがない場合は null を返します。
isLeaf target 指定されたノードをリーフノードとして定義します。target パラメータはノードの DOM オブジェクトを表します。
find id 指定されたノードを見つけて、そのノードオブジェクトを返します。コード例:
// find a node and then select it
var node = $('#tt').tree('find', 12);
$('#tt').tree('select', node.target);
select target ノードを選択します。target パラメータはノードの DOM オブジェクトを表します。
check target 指定されたノードをチェック状態に設定します。
uncheck target 指定されたノードを未チェック状態に設定します。
collapse target ノードを折りたたみます。target パラメータはノードの DOM オブジェクトを表します。
expand target ノードを展開します。target パラメータはノードの DOM オブジェクトを表します。ノードが折りたたまれていて子ノードがない場合、ノードの id 値('id' という名前のパラメータ)がサーバーに送信され、子ノードデータを要求します。
collapseAll target すべてのノードを折りたたみます。
expandAll target すべてのノードを展開します。
expandTo target ルートから指定されたノードを展開します。
scrollTo target 指定されたノードまでスクロールします。このメソッドはバージョン 1.3.4 以降で使用できます。
append param 親ノードに子ノードを追加します。param パラメータには2つのプロパティがあります:
parent:DOM オブジェクト。追加先の親ノードです。指定されていない場合は、ルートノードとして追加されます。
data:配列。ノードのデータです。

コード例:
// append some nodes to the selected node
var selected = $('#tt').tree('getSelected');
$('#tt').tree('append', {
    parent: selected.target,
    data: [{
        id: 23,
        text: 'node23'
    },{
        text: 'node24',
        state: 'closed',
        children: [{
            text: 'node241'
        },{
            text: 'node242'
        }]
    }]
});
toggle target ノードの展開/折りたたみ状態を切り替えます。target パラメータはノードの DOM オブジェクトを表します。
insert param 指定されたノードの前または後ろにノードを挿入します。param パラメータには次のプロパティが含まれます:
before:DOM オブジェクト。前に挿入するノードです。
after:DOM オブジェクト。後ろに挿入するノードです。
data:オブジェクト。ノードデータです。

次のコードは、選択されたノードの前に新しいノードを挿入する方法を示しています:
var node = $('#tt').tree('getSelected');
if (node){
    $('#tt').tree('insert', {
        before: node.target,
        data: {
            id: 21,
            text: 'node text'
        }
    });
}
remove target ノードとその子ノードを削除します。target パラメータはノードの DOM オブジェクトを表します。
pop target ノードとその子ノードを取り出します。このメソッドは remove と同じですが、削除されたノードデータを返します。
update param 指定されたノードを更新します。'param' パラメータには次のプロパティがあります:
target(DOM オブジェクト。更新対象のノード)、id、text、iconCls、checked など。

コード例:
// update the selected node text
var node = $('#tt').tree('getSelected');
if (node){
    $('#tt').tree('update', {
        target: node.target,
        text: 'new text'
    });
}
enableDnd none ドラッグ&ドロップ機能を有効にします。
disableDnd none ドラッグ&ドロップ機能を無効にします。
beginEdit target ノードの編集を開始します。
endEdit target ノードの編集を終了します。
cancelEdit target ノードの編集をキャンセルします。

jQuery EasyUI 插件jQuery EasyUI プラグイン その他の拡張