Ereignisse sind eine großartige Möglichkeit, Ihr Gantt-Diagramm interaktiv und reaktionsfähig auf Benutzeraktionen zu gestalten. Wann immer ein Benutzer eine Aktion im Gantt-Diagramm ausführt, löst dhtmlxGantt ein Ereignis aus. Diese Ereignisse können verwendet werden, um die Aktion zu erkennen und spezifischen Code als Reaktion auszuführen.
Um ein Ereignis einzurichten, können Sie die Methode gantt.attachEvent
verwenden.
gantt.attachEvent("onTaskClick", function(id, e) {
alert("Sie haben gerade ein Element mit der ID=" + id + " angeklickt.");
});
Hinweis:
Um einen Ereignishandler zu entfernen, ist die Methode gantt.detachEvent
nützlich:
Eine allgemeine Methode zum Anhängen/Entfernen des Ereignishandlers
// Ein Ereignis anhängen
var eventId = gantt.attachEvent("onTaskClick", function(id, e) {
alert("Sie haben gerade ein Element mit der ID=" + id + " angeklickt.");
});
// Das Ereignis entfernen
gantt.detachEvent(eventId);
Wenn Sie alle Ereignishandler auf einmal entfernen müssen, können Sie diesen Ansatz verfolgen:
// Handler-IDs beim Anhängen von Ereignissen speichern
var events = [];
events.push(gantt.attachEvent("onTaskClick", function(id, e) {
alert("Sie haben gerade ein Element mit der ID=" + id + " angeklickt.");
}));
events.push(gantt.attachEvent("onTaskDblClick", function(id, e) {
alert("Sie haben gerade doppelt auf ein Element mit der ID=" + id + " geklickt.");
}));
// Alle gespeicherten Ereignisse entfernen
while (events.length)
gantt.detachEvent(events.pop());
Um zu überprüfen, ob ein bestimmtes Ereignis Handler angehängt hat, können Sie die Methode gantt.checkEvent
verwenden:
gantt.attachEvent("onTaskClick", function(id, e) {
alert("Sie haben gerade eine Aufgabe mit der ID=" + id + " angeklickt.");
});
gantt.checkEvent("onTaskClick"); // Gibt 'true' zurück
Ereignisse, die mit 'onBefore' beginnen, können abgebrochen werden.
Um zu verhindern, dass ein Ereignis fortgesetzt wird, geben Sie einfach false im Ereignishandler zurück.
Abbrechen des Ereignishandlers
gantt.attachEvent("onBeforeTaskChanged", function(id, mode, old_task) {
var task = gantt.getTask(id);
if (mode == gantt.config.drag_mode.progress) {
if (task.progress < old_task.progress) {
dhtmlx.message(task.text + " Fortschritt kann nicht rückgängig gemacht werden!");
return false; }
}
return true;
});
Wenn Sie sich innerhalb eines Ereignishandlers befinden, können Sie auf das Gantt-Objekt mit dem Schlüsselwort this verweisen.
Verweis innerhalb des Ereignishandlers
gantt.attachEvent("onTaskClick", function(id, e) {
parentId = this.getTask(id).parent;
});
Zurück nach oben