jQuery EasyUI Data Grid et Tree Plugin –Tree
jQuery EasyUI Plugin
Surchargez les valeurs par défaut avec $.fn.tree.defaults.
L'arbre affiche des données hiérarchiques sous forme d'arborescence sur une page web. Il fournit aux utilisateurs des fonctionnalités de développement, de réduction, de glisser-déposer, d'édition et de chargement asynchrone.
Dépendances
- draggable
- droppable
Utilisation
L'arbre est défini dans un élément <ul>. Cette balise peut définir des nœuds feuilles et des nœuds enfants. Les nœuds seront des éléments <li> à l'intérieur de la liste ul. Ce qui suit montre les éléments utilisés pour créer des nœuds d'arbre imbriqués dans un élément 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>
Un arbre peut également être défini dans un élément <ul> vide, et les données peuvent être chargées à l'aide de JavaScript.
<ul id="tt"></ul>
$('#tt').tree({
url:'tree_data.json'
});
Utilisez loadFilter pour traiter les données JSON provenant d'un service web ASP.NET.
$('#tt').tree({
url: ...,
loadFilter: function(data){
if (data.d){
return data.d;
} else {
return data;
}
}
});
Format des données d'arbre
Chaque nœud peut contenir les propriétés suivantes :
- id : L'id du nœud, qui est important pour le chargement de données distantes.
- text : Le texte du nœud à afficher.
- state : L'état du nœud, 'open' ou 'closed', la valeur par défaut est 'open'. Lorsqu'il est défini sur 'closed', le nœud a des nœuds enfants, et ils seront chargés depuis le site distant.
- checked : Indique si le nœud est coché.
- attributes : Attributs personnalisés ajoutés à un nœud.
- children : Un tableau de nœuds qui définit certains nœuds enfants.
Exemple :
[{
"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#"
}]
}]
Arborescence asynchrone
L'arborescence prend en charge un mode de chargement asynchrone intégré, ce qui permet aux utilisateurs de créer une arborescence vide, puis de spécifier un service côté serveur qui renvoie dynamiquement des données JSON pour alimenter l'arborescence de façon asynchrone selon les besoins. Voici un exemple :
<ul class="easyui-tree" data-options="url:'get_data.php'"></ul>
L'arborescence est chargée via l'URL 'get_data.php'. Les nœuds enfants sont chargés en fonction de l'état du nœud parent. Lorsqu'un nœud fermé est développé, si aucun nœud enfant n'a été chargé pour lui, il envoie la valeur id du nœud au serveur via l'URL définie ci-dessus comme paramètre de requête HTTP nommé 'id' afin de récupérer les nœuds enfants.
Regardez les données renvoyées par le serveur :
[{
"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"
}]
Les nœuds 1 et 2 sont fermés. Lorsque le nœud 1 est développé, ses nœuds enfants seront affichés directement. Lorsque le nœud 2 est développé, value(2) sera envoyé au serveur pour récupérer les nœuds enfants.
Dans ce tutoriel,Création d'une arborescence asynchronemontre comment écrire du code serveur pour renvoyer les données de l'arborescence à la demande.
Propriétés
| Name | Type | Description | Valeur par défaut |
|---|---|---|---|
| url | string | L'URL pour récupérer les données distantes. | null |
| method | string | La méthode HTTP utilisée pour récupérer les données. | post |
| animer | booléen | Définit s'il faut afficher des effets d'animation lorsqu'un nœud se développe ou se replie. | false |
| checkbox | booléen | Définit s'il faut afficher une case à cocher avant chaque nœud. | false |
| cascadeCheck | booléen | Définit s'il faut activer les vérifications en cascade. | vrai |
| onlyLeafCheck | booléen | Définit s'il faut afficher les cases à cocher uniquement avant les nœuds feuilles. | false |
| lines | booléen | Définit s'il faut afficher les lignes de l'arborescence. | false |
| dnd | booléen | Définit s'il faut activer le glisser-déposer. | false |
| data | array | Les données du nœud à charger.
$('#tt').tree({
data: [{
text: 'Item1',
state: 'closed',
children: [{
text: 'Item11'
},{
text: 'Item12'
}]
},{
text: 'Item2'
}]
});
|
null |
| formatter | function(node) | Définit comment effectuer le rendu du texte du nœud. Exemple de code :
$('#tt').tree({
formatter:function(node){
return node.text;
}
});
|
|
| loader | function(param,success,error) | Définit comment charger des données depuis un serveur distant. Retourner false pour annuler cette action. Cette fonction a les paramètres suivants : param : L'objet de paramètres à transmettre au serveur distant. success(data) : Une fonction de rappel appelée lorsque la récupération des données réussit. error() : Une fonction de rappel appelée lorsque la récupération des données échoue. |
chargeur json |
| loadFilter | function(data,parent) | Retourne les données filtrées à afficher. Les données sont renvoyées au format d'arborescence standard. Cette fonction possède les paramètres suivants : data : les données brutes à charger. parent : un objet DOM représentant le nœud parent. |
Événements
De nombreuses fonctions de rappel d'événement nécessitent un paramètre 'node', qui inclut les propriétés suivantes :
- id : la valeur d'identifiant liée au nœud.
- text : le texte à afficher.
- iconCls : la classe CSS utilisée pour afficher l'icône.
- checked : indique si le nœud est coché.
- state : l'état du nœud, 'open' ou 'closed'.
- attributes : propriétés personnalisées liées au nœud.
- target : l'objet DOM cible.
| Name | Parameters | Description |
|---|---|---|
| onClick | nœud | Déclenché lorsqu'un utilisateur clique sur un nœud. Exemple de code :
$('#tt').tree({
onClick: function(node){
alert(node.text); // alert node text property when clicked
}
});
|
| onDblClick | nœud | Déclenché lorsqu'un utilisateur double-clique sur un nœud. |
| onBeforeLoad | node, param | Déclenché avant l'envoi d'une requête de chargement de données ; renvoyer false pour annuler l'action de chargement. |
| onLoadSuccess | node, data | Déclenché lorsque le chargement des données réussit. |
| onLoadError | arguments | Déclenché lorsque le chargement des données échoue ; le paramètre arguments est identique à la fonction 'error' de jQuery.ajax. |
| onBeforeExpand | nœud | Déclenché avant qu'un nœud ne se développe ; renvoyer false pour annuler l'action de développement. |
| onExpand | nœud | Déclenché lorsqu'un nœud se développe. |
| onBeforeCollapse | nœud | Déclenché avant qu'un nœud ne se replie ; return false pour annuler l'action de repli. |
| onCollapse | nœud | Déclenché lorsqu'un nœud se replie. |
| onBeforeCheck | node, checked | Déclenché avant qu'un utilisateur ne clique sur une case à cocher ; return false pour annuler l'action de cocher. Cet événement est disponible depuis la version 1.3.1. |
| onCheck | node, checked | Déclenché lorsqu'un utilisateur clique sur une case à cocher. |
| onBeforeSelect | nœud | Déclenché avant qu'un nœud ne soit sélectionné ; return false pour annuler l'action de sélection. |
| onSelect | nœud | Déclenché lorsqu'un nœud est sélectionné. |
| onContextMenu | e, node | Déclenché lorsqu'un nœud est cliqué avec le bouton droit. Exemple de code :
// 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 | nœud | Déclenché lorsque le glissement d'un nœud commence ; renvoyer false pour interdire le glissement. Cet événement est disponible depuis la version 1.3.2. |
| onStartDrag | nœud | Déclenché lorsqu'un nœud commence à être glissé. Cet événement est disponible depuis la version 1.3.2. |
| onStopDrag | nœud | Déclenché lorsque le glissement d'un nœud s'arrête. Cet événement est disponible depuis la version 1.3.2. |
| onDragEnter | target, source | Déclenché lorsqu'un nœud est glissé au-dessus d'un nœud cible de dépôt autorisé ; renvoyer false pour interdire le dépôt. target: L'élément de nœud cible où il est déposé. source: Le nœud source en cours de glissement. Cet événement est disponible depuis la version 1.3.2. |
| onDragOver | target, source | Déclenché lorsqu'un nœud est glissé sur un nœud cible de dépôt autorisé ; renvoyer false pour interdire le dépôt. target: L'élément de nœud cible où il est déposé. source: Le nœud source en cours de glissement. Cet événement est disponible depuis la version 1.3.2. |
| onDragLeave | target, source | Déclenché lorsqu'un nœud est glissé en dehors d'un nœud cible de dépôt autorisé. target: L'élément de nœud cible où il est déposé. source: Le nœud source en cours de glissement. Cet événement est disponible depuis la version 1.3.2. |
| onBeforeDrop | target,source,point | Déclenché avant qu'un nœud ne soit déposé ; retournez false pour interdire le dépôt. target : objet DOM, le nœud cible pour le dépôt. source : Le nœud source. point : Indique l'opération de dépôt. Les valeurs possibles sont : 'append', 'top' ou 'bottom'. Cet événement est disponible depuis la version 1.3.2. |
| onDrop | target,source,point | Déclenché lorsqu'un nœud est déposé.
target : objet DOM, le nœud cible pour le dépôt. source : Le nœud source. point : Indique l'opération de dépôt. Les valeurs possibles sont : 'append', 'top' ou 'bottom'. |
| onBeforeEdit | nœud | Déclenché avant qu'un nœud ne soit modifié. |
| onAfterEdit | nœud | Déclenché après qu'un nœud a été modifié. |
| onCancelEdit | nœud | Déclenché lorsque l'action de modification est annulée. |
Méthodes
| Name | Parameters | Description |
|---|---|---|
| options | none | Renvoie les options de l'arborescence. |
| loadData | data | Charge les données de l'arborescence. |
| getNode | target | Obtient l'objet nœud spécifié. |
| getData | target | Obtient les données du nœud spécifié, y compris ses nœuds enfants. |
| reload | target | Recharge les données de l'arborescence. |
| getRoot | none | Obtient le nœud racine et renvoie l'objet nœud. |
| getRoots | none | Obtient les nœuds racines et renvoie un tableau de nœuds. |
| getParent | target | Obtient le nœud parent. Le paramètre target représente l'objet DOM du nœud. |
| getChildren | target | Obtient les nœuds enfants. Le paramètre target représente l'objet DOM du nœud. |
| getChecked | state | Obtient les nœuds sélectionnés. Valeurs d'état disponibles : 'checked', 'unchecked', 'indeterminate'. Si l'état n'est pas attribué, renvoie les nœuds 'checked'. Exemple de code :
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 | Obtient le nœud sélectionné et le renvoie. Si aucun nœud n'est sélectionné, renvoie null. |
| isLeaf | target | Définir le nœud spécifié comme un nœud feuille. Le paramètre target représente l'objet DOM du nœud. |
| trouver | id | Trouver le nœud spécifié et renvoyer cet objet nœud. Exemple de code :
// find a node and then select it
var node = $('#tt').tree('find', 12);
$('#tt').tree('select', node.target);
|
| select | target | Sélectionner un nœud. Le paramètre target représente l'objet DOM du nœud. |
| check | target | Définir le nœud spécifié comme coché. |
| uncheck | target | Définir le nœud spécifié comme non coché. |
| collapse | target | Réduire un nœud. Le paramètre target représente l'objet DOM du nœud. |
| expand | target | Développer un nœud. Le paramètre target représente l'objet DOM du nœud. Lorsque le nœud est fermé et n'a pas de nœuds enfants, la valeur id du nœud (le paramètre nommé 'id') sera envoyée au serveur pour demander les données des nœuds enfants. |
| collapseAll | target | Réduire tous les nœuds. |
| expandAll | target | Développer tous les nœuds. |
| expandTo | target | Développer un nœud spécifié à partir de la racine. |
| scrollTo | target | Faire défiler jusqu'au nœud spécifié. Cette méthode est disponible depuis la version 1.3.4. |
| append | param | Ajouter des nœuds enfants à un nœud parent. Le paramètre param possède deux propriétés : parent : objet DOM, le nœud parent auquel ajouter. S'il n'est pas défini, ajoute en tant que nœud racine. data : tableau, les données du nœud. Exemple de code :
// 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 | Basculer l'état développé/réduit d'un nœud. Le paramètre target représente l'objet DOM du nœud. |
| insert | param | Insérer un nœud avant ou après le nœud spécifié. Le paramètre param inclut les propriétés suivantes : before : objet DOM, le nœud avant lequel insérer. after : objet DOM, le nœud après lequel insérer. data: object, les données du nœud. Le code suivant montre comment insérer un nouveau nœud avant le nœud sélectionné :
var node = $('#tt').tree('getSelected');
if (node){
$('#tt').tree('insert', {
before: node.target,
data: {
id: 21,
text: 'node text'
}
});
}
|
| supprimer | target | Supprimer un nœud et ses nœuds enfants. Le paramètre target représente l'objet DOM du nœud. |
| pop | target | Extraire un nœud et ses nœuds enfants. Cette méthode est identique à remove, mais renvoie les données du nœud supprimé. |
| update | param | Mettre à jour le nœud spécifié. Le paramètre 'param' possède les propriétés suivantes : target (objet DOM, le nœud à mettre à jour), id, text, iconCls, checked, etc. Exemple de code :
// update the selected node text
var node = $('#tt').tree('getSelected');
if (node){
$('#tt').tree('update', {
target: node.target,
text: 'new text'
});
}
|
| enableDnd | none | Activer la fonctionnalité de glisser-déposer. |
| disableDnd | none | Désactiver la fonctionnalité de glisser-déposer. |
| beginEdit | target | Commencer l'édition du nœud. |
| endEdit | target | Terminer l'édition du nœud. |
| cancelEdit | target | Annuler l'édition du nœud. |
jQuery EasyUI Plugin Autres extensions