jQuery EasyUI Data Grid and Tree Plugin –Tree


jQuery EasyUI 插件jQuery EasyUI Plugin

Die Standardeinstellungen mit $.fn.tree.defaults überschreiben.

Der Baum zeigt hierarchische Daten als Baumstruktur auf einer Webseite an. Er bietet Benutzern Funktionen zum Aufklappen, Zuklappen, Drag-and-Drop, Bearbeiten und asynchronen Laden.

Abhängigkeiten

  • draggable
  • droppable

Nutzung

Der Baum wird in einem <ul>-Element definiert. Dieses Tag kann Blattknoten und Kindknoten definieren. Die Knoten werden <li>-Elemente innerhalb der ul-Liste sein. Das Folgende veranschaulicht die Elemente, die verwendet werden, um in einem ul-Element verschachtelte Baumknoten zu erstellen.

<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>

Ein Baum kann auch in einem leeren <ul>-Element definiert werden, und Daten können mit JavaScript geladen werden.

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

Verwenden Sie loadFilter, um JSON-Daten von einem ASP.NET-Webdienst zu verarbeiten.

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

Baumdatenformat

Jeder Knoten kann die folgenden Eigenschaften enthalten:

  • id: Die ID des Knotens, die für das Laden von Remote-Daten wichtig ist.
  • text: Der anzuzeigende Knotentext.
  • state: Der Knotenstatus, 'open' oder 'closed', Standard ist 'open'. Wenn auf 'closed' gesetzt, hat der Knoten Kindknoten, und diese werden von der Remote-Seite geladen.
  • checked: Gibt an, ob der Knoten angehakt ist.
  • attributes: Benutzerdefinierte Attribute, die einem Knoten hinzugefügt werden.
  • children: Ein Array von Knoten, das einige Kindknoten definiert.

Beispiel:

[{
    "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#"
    }]
}]

Asynchroner Baum

Der Baum unterstützt einen integrierten asynchronen Lademodus, sodass Benutzer einen leeren Baum erstellen und dann eine serverseitige Komponente angeben können, die dynamisch JSON-Daten zurückgibt, um den Baum nach Bedarf asynchron zu befüllen. Das Folgende ist ein Beispiel:

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

Der Baum wird über die URL 'get_data.php' geladen. Untergeordnete Knoten werden abhängig vom Zustand des übergeordneten Knotens geladen. Wenn ein geschlossener Knoten erweitert wird und für ihn noch keine untergeordneten Knoten geladen wurden, sendet er den id-Wert des Knotens über die oben definierte URL als HTTP-Anfrageparameter namens 'id' an den Server, um untergeordnete Knoten abzurufen.

Sehen Sie sich die vom Server zurückgegebenen Daten an:

[{
    "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"
}]

Knoten 1 und Knoten 2 sind geschlossen. Wenn Knoten 1 erweitert wird, werden seine untergeordneten Knoten direkt angezeigt. Wenn Knoten 2 erweitert wird, wird value(2) an den Server gesendet, um untergeordnete Knoten abzurufen.

In diesem Tutorial zeigtErstellen eines asynchronen Baums, wie man Servercode schreibt, um Baumdaten bei Bedarf zurückzugeben.

Eigenschaften

Name Type Beschreibung Standardwert
url string Die URL zum Abrufen von Remotedaten. null
method string Die HTTP-Methode, die zum Abrufen von Daten verwendet wird. post
animate boolesch Legt fest, ob Animationseffekte angezeigt werden, wenn ein Knoten erweitert oder eingeklappt wird. false
checkbox boolesch Legt fest, ob vor jedem Knoten ein Kontrollkästchen angezeigt wird. false
cascadeCheck boolesch Legt fest, ob kaskadierende Prüfungen aktiviert werden. wahr
onlyLeafCheck boolesch Definiert, ob Kontrollkästchen nur vor Blattknoten angezeigt werden. false
lines boolesch Definiert, ob Baumlinien angezeigt werden. false
dnd boolesch Definiert, ob Drag & Drop aktiviert werden soll. false
data array Die zu ladenden Knotendaten.
$('#tt').tree({
    data: [{
        text: 'Item1',
        state: 'closed',
        children: [{
            text: 'Item11'
        },{
            text: 'Item12'
        }]
    },{
        text: 'Item2'
    }]
});
null
formatter function(node) Definiert, wie der Knotentext gerendert wird.
Codebeispiel:
$('#tt').tree({
    formatter:function(node){
        return node.text;
    }
});
loader function(param,success,error) Definiert, wie Daten von einem entfernten Server geladen werden. Geben Sie false zurück, um diese Aktion abzubrechen. Diese Funktion hat die folgenden Parameter:
param: Das Parameterobjekt, das an den Remote-Server übergeben wird.
success(data): Eine Callback-Funktion, die aufgerufen wird, wenn der Datenabruf erfolgreich ist.
error(): Eine Callback-Funktion, die aufgerufen wird, wenn der Datenabruf fehlschlägt.
JSON-Loader
loadFilter function(data,parent) Gibt die gefilterten Daten zurück, die angezeigt werden sollen. Die Daten werden im Standard-Baumformat zurückgegeben. Diese Funktion hat die folgenden Parameter:
data: Die Rohdaten, die geladen werden sollen.
parent: Ein DOM-Objekt, das den übergeordneten Knoten darstellt.

Ereignisse

Viele Event-Callback-Funktionen benötigen einen 'node'-Parameter, der die folgenden Eigenschaften enthält:

  • id: Der an den Knoten gebundene Bezeichnerwert.
  • text: Der anzuzeigende Text.
  • iconCls: Die CSS-Klasse, die zum Anzeigen des Symbols verwendet wird.
  • checked: Gibt an, ob der Knoten markiert ist.
  • state: Der Knotenstatus, 'open' oder 'closed'.
  • attributes: Benutzerdefinierte Eigenschaften, die an den Knoten gebunden sind.
  • target: Das Ziel-DOM-Objekt.
Name Parameters Beschreibung
onClick Knoten Wird ausgelöst, wenn ein Benutzer auf einen Knoten klickt. Codebeispiel:
$('#tt').tree({
    onClick: function(node){
        alert(node.text);  // alert node text property when clicked
    }
});
onDblClick Knoten Wird ausgelöst, wenn ein Benutzer auf einen Knoten doppelklickt.
onBeforeLoad node, param Wird ausgelöst, bevor eine Datenladeanfrage gesendet wird; false zurückgeben, um den Ladevorgang abzubrechen.
onLoadSuccess node, data Wird ausgelöst, wenn das Laden der Daten erfolgreich ist.
onLoadError Argumente Wird ausgelöst, wenn das Laden der Daten fehlschlägt; der Parameter arguments ist derselbe wie bei der 'error'-Funktion von jQuery.ajax.
onBeforeExpand Knoten Wird ausgelöst, bevor ein Knoten erweitert wird; false zurückgeben, um den Erweiterungsvorgang abzubrechen.
onExpand Knoten Wird ausgelöst, wenn ein Knoten erweitert wird.
onBeforeCollapse Knoten Wird ausgelöst, bevor ein Knoten eingeklappt wird; return false, um die Einklappaktion abzubrechen.
onCollapse Knoten Wird ausgelöst, wenn ein Knoten eingeklappt wird.
onBeforeCheck node, checked Wird ausgelöst, bevor ein Benutzer auf ein Kontrollkästchen klickt; return false, um die Ankreuzaktion abzubrechen. Dieses Ereignis ist seit Version 1.3.1 verfügbar.
onCheck node, checked Wird ausgelöst, wenn ein Benutzer auf ein Kontrollkästchen klickt.
onBeforeSelect Knoten Wird ausgelöst, bevor ein Knoten ausgewählt wird; return false, um die Auswahlaktion abzubrechen.
onSelect Knoten Wird ausgelöst, wenn ein Knoten ausgewählt wird.
onContextMenu e, node Wird ausgelöst, wenn ein Knoten mit der rechten Maustaste angeklickt wird. Codebeispiel:
// 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 Knoten Wird ausgelöst, wenn das Ziehen eines Knotens beginnt; geben Sie false zurück, um das Ziehen zu verbieten. Dieses Ereignis ist seit Version 1.3.2 verfügbar.
onStartDrag Knoten Wird ausgelöst, wenn ein Knoten beginnt, gezogen zu werden. Dieses Ereignis ist seit Version 1.3.2 verfügbar.
onStopDrag Knoten Wird ausgelöst, wenn das Ziehen eines Knotens beendet wird. Dieses Ereignis ist seit Version 1.3.2 verfügbar.
onDragEnter target, source Wird ausgelöst, wenn ein Knoten über einen zulässigen Drop-Zielknoten gezogen wird; geben Sie false zurück, um das Ablegen zu verbieten.
target: Das Zielknotenelement, auf dem abgelegt wird.
source: Der Quellknoten, der gezogen wird.
Dieses Ereignis ist seit Version 1.3.2 verfügbar.
onDragOver target, source Wird ausgelöst, wenn ein Knoten auf einen zulässigen Drop-Zielknoten gezogen wird; geben Sie false zurück, um das Ablegen zu verbieten.
target: Das Zielknotenelement, auf dem abgelegt wird.
source: Der Quellknoten, der gezogen wird.
Dieses Ereignis ist seit Version 1.3.2 verfügbar.
onDragLeave target, source Wird ausgelöst, wenn ein Knoten von einem zulässigen Drop-Zielknoten weggezogen wird.
target: Das Zielknotenelement, auf dem abgelegt wird.
source: Der Quellknoten, der gezogen wird.
Dieses Ereignis ist seit Version 1.3.2 verfügbar.
onBeforeDrop target,source,point Wird ausgelöst, bevor ein Knoten abgelegt wird; geben Sie false zurück, um das Ablegen zu verbieten.
target: DOM-Objekt, der Zielknoten zum Ablegen.
source: Der Quellknoten.
point: Gibt den Drop-Vorgang an. Mögliche Werte sind: 'append', 'top' oder 'bottom'.
Dieses Ereignis ist seit Version 1.3.2 verfügbar.
onDrop target,source,point Wird ausgelöst, wenn ein Knoten abgelegt wird. target: DOM-Objekt, der Zielknoten zum Ablegen.
source: Der Quellknoten.
point: Gibt den Drop-Vorgang an. Mögliche Werte sind: 'append', 'top' oder 'bottom'.
onBeforeEdit Knoten Wird ausgelöst, bevor ein Knoten bearbeitet wird.
onAfterEdit Knoten Wird ausgelöst, nachdem ein Knoten bearbeitet wurde.
onCancelEdit Knoten Wird ausgelöst, wenn die Bearbeitungsaktion abgebrochen wird.

Methoden

Name Parameters Beschreibung
options none Gibt die Optionen des Baums zurück.
loadData data Lädt die Baumdaten.
getNode target Ruft das angegebene Knotenobjekt ab.
getData target Ruft die angegebenen Knotendaten ab, einschließlich ihrer untergeordneten Knoten.
reload target Lädt die Baumdaten neu.
getRoot none Ruft den Wurzelknoten ab und gibt das Knotenobjekt zurück.
getRoots none Ruft die Wurzelknoten ab und gibt ein Array von Knoten zurück.
getParent target Ruft den übergeordneten Knoten ab. Der Parameter target repräsentiert das DOM-Objekt des Knotens.
getChildren target Ruft untergeordnete Knoten ab. Der Parameter target repräsentiert das DOM-Objekt des Knotens.
getChecked state Ruft die ausgewählten Knoten ab. Verfügbare Zustandswerte: 'checked', 'unchecked', 'indeterminate'. Wenn kein Zustand zugewiesen ist, werden 'checked'-Knoten zurückgegeben.
Codebeispiel:
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 Ruft den ausgewählten Knoten ab und gibt ihn zurück. Wenn kein Knoten ausgewählt ist, wird null zurückgegeben.
isLeaf target Definieren Sie den angegebenen Knoten als Blattknoten. Der Parameter target repräsentiert das DOM-Objekt des Knotens.
finde id Suchen Sie den angegebenen Knoten und geben Sie dieses Knotenobjekt zurück. Codebeispiel:
// find a node and then select it
var node = $('#tt').tree('find', 12);
$('#tt').tree('select', node.target);
select target Wählen Sie einen Knoten aus. Der Parameter target repräsentiert das DOM-Objekt des Knotens.
check target Markieren Sie den angegebenen Knoten.
uncheck target Heben Sie die Markierung des angegebenen Knotens auf.
collapse target Klappen Sie einen Knoten ein. Der Parameter target repräsentiert das DOM-Objekt des Knotens.
expand target Klappen Sie einen Knoten aus. Der Parameter target repräsentiert das DOM-Objekt des Knotens. Wenn der Knoten geschlossen ist und keine untergeordneten Knoten hat, wird der id-Wert des Knotens (der Parameter namens 'id') an den Server gesendet, um Kindknotendaten anzufordern.
collapseAll target Klappen Sie alle Knoten ein.
expandAll target Alle Knoten erweitern.
expandTo target Einen angegebenen Knoten von der Wurzel aus erweitern.
scrollTo target Zum angegebenen Knoten scrollen. Diese Methode ist seit Version 1.3.4 verfügbar.
append param Einige untergeordnete Knoten an einen übergeordneten Knoten anhängen. Der Parameter param hat zwei Eigenschaften:
parent: DOM-Objekt, der übergeordnete Knoten, an den angehängt wird. Wenn nicht zugewiesen, wird als Wurzelknoten angehängt.
data: Array, die Knotendaten.

Codebeispiel:
// 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 Den Erweiterungs-/Reduzierungsstatus eines Knotens umschalten. Der target-Parameter repräsentiert das DOM-Objekt des Knotens.
insert param Einen Knoten vor oder nach dem angegebenen Knoten einfügen. Der Parameter param enthält die folgenden Eigenschaften:
before: DOM-Objekt, der Knoten, vor dem eingefügt wird.
after: DOM-Objekt, der Knoten, nach dem eingefügt wird.
data: object, die Knotendaten.

Der folgende Code zeigt, wie man einen neuen Knoten vor dem ausgewählten Knoten einfügt:
var node = $('#tt').tree('getSelected');
if (node){
    $('#tt').tree('insert', {
        before: node.target,
        data: {
            id: 21,
            text: 'node text'
        }
    });
}
entfernen target Entfernt einen Knoten und seine untergeordneten Knoten. Der Parameter target repräsentiert das DOM-Objekt des Knotens.
pop target Entfernt einen Knoten und seine untergeordneten Knoten. Diese Methode ist dieselbe wie remove, gibt jedoch die Daten des entfernten Knotens zurück.
update param Aktualisiert den angegebenen Knoten. Der Parameter 'param' hat die folgenden Eigenschaften:
target (DOM-Objekt, der zu aktualisierende Knoten), id, text, iconCls, checked usw.

Codebeispiel:
// update the selected node text
var node = $('#tt').tree('getSelected');
if (node){
    $('#tt').tree('update', {
        target: node.target,
        text: 'new text'
    });
}
enableDnd none Aktiviert die Drag-and-Drop-Funktionalität.
disableDnd none Deaktiviert die Drag-and-Drop-Funktionalität.
beginEdit target Startet die Bearbeitung des Knotens.
endEdit target Beendet die Bearbeitung des Knotens.
cancelEdit target Bricht die Bearbeitung des Knotens ab.

jQuery EasyUI 插件jQuery EasyUI Plugin Weitere Erweiterungen