Zum Hauptinhalt springen

Ereignisbehandlung

Ereignisse ermöglichen die Interaktion mit Benutzern und erhöhen die Interaktivität der Seite.

Wenn der Benutzer eine Aktion im Gantt-Diagramm ausführt, ruft dhtmlxGantt ein Ereignis auf. Sie können dieses Ereignis verwenden, um die Aktion zu erkennen und den gewünschten Code dafür auszuführen.

Ereignisse anhängen

Um ein Ereignis anzuhängen, verwenden Sie die attachEvent() Methode.

gantt.attachEvent("onTaskClick", (id, e) => {
alert(`You've just clicked an item with id=${id}`);
});

Zugehöriges Beispiel: D'n'D Events

Hinweis:

  • Die Namen der Ereignisse sind Groß-/Kleinschreibung unabhängig.
  • Sie können mehreren Handlern denselben Ereignis zuordnen.

Ereignisse trennen

Um einen Ereignis-Handler zu trennen, verwenden Sie die detachEvent() Methode:

A general way to attach/detach the event handler
// to attach event
const eventId = gantt.attachEvent("onTaskClick", (id, e) => {
alert(`You've just clicked an item with id=${id}`);
});
// to detach event
gantt.detachEvent(eventId);

Um alle gespeicherten Handler auf einmal zu trennen, können Sie die folgende Logik verwenden:

// save handler ids when attaching events
const eventIds = [];

eventIds.push(gantt.attachEvent("onTaskClick", (id, e) => {
alert(`You've just clicked an item with id=${id}`);
}));
eventIds.push(gantt.attachEvent("onTaskDblClick", (id, e) => {
alert(`You've just double clicked an item with id=${id}`);
}));

// detach all saved events
while (eventIds.length) {
gantt.detachEvent(eventIds.pop());
}

Prüfen, ob ein Handler existiert

Um zu prüfen, ob für ein bestimmtes Ereignis irgendwelche Handler registriert sind, verwenden Sie die checkEvent() Methode:

gantt.attachEvent("onTaskClick", (id, e) => {
alert(`You've just clicked a task with id=${id}`);
});

gantt.checkEvent("onTaskClick"); // returns 'true'

Abbruchbare Ereignisse

Alle Ereignisse, deren Namen mit dem vorstehenden Subwort 'onbefore' beginnen, können abgebrochen werden.

Um ein Ereignis abzubrechen, geben Sie im entsprechenden Ereignis-Handler false zurück.

Cancelling the event handler
gantt.attachEvent("onBeforeTaskChanged", (id, mode, oldTask) => {
const task = gantt.getTask(id);
if (mode === gantt.config.drag_mode.progress) {
if (task.progress < oldTask.progress) {
dhtmlx.message(`${task.text} progress can't be undone!`);
return false;
}
}
return true;
});

Zugehöriges Beispiel: D'n'D Events

Zugriff auf das Gantt-Objekt innerhalb des Handlers

Innerhalb des Ereignis-Handlers können Sie sich auf das Gantt-Objekt über das Schlüsselwort this beziehen.

Bezug innerhalb des Event-Handlers
gantt.attachEvent("onTaskClick", function(id, e) {
const parentId = this.getTask(id).parent;
});
Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.