jQuery EasyUI Data Grid and Tree Plugin –Tree
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 Plugin Weitere Erweiterungen