jQuery EasyUI Data Grid et Tree Plugin –Tree


jQuery EasyUI 插件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 插件jQuery EasyUI Plugin Autres extensions