2016-08-02 15 views
4

Ich habe eine Handsontable-Tabelle, die dynamisch ist, dh Daten können nach der Initiierung hinzugefügt werden. Das Problem besteht jedoch darin, dass neue Zeilen zur Tabelle hinzugefügt werden können, wenn Sie bei gedrückter Maustaste auf die Ecke einer Zelle klicken. Wie verhindere ich, dass Benutzer die Tabelle erweitern, während ich sicherstellen muss, dass ich immer noch neue Zeilen hinzufügen kann, wenn man beispielsweise mit einer Schaltfläche interagieren würde?handsontable/javascript - Deaktivieren Sie neue Zeilen durch Ziehen

Ich versuchte

afterCreateRow: function(index, amount){ data.splice(index, amount) },

verwenden, aber das hindert mich daran, neue Zeilen Hinzufügen der alter Funktion. Wenn diese Frage eher vage war: Siehe den untenstehenden Link für eine Standard-JSfiddle mit Handsontable. Klicken Sie auf die Ecke einer Zelle und ziehen Sie sie nach unten, Sie werden sehen.

http://jsfiddle.net/warpech/hU6Kz/

TL; DR: Deaktivieren Zeilenerstellung wenn Zellen ziehen, row Erstellung unter Verwendung (in Code) handsontable.alter('insert_row');

Dank im Voraus ermöglichen.

Antwort

1

BEARBEITEN: Überprüfen Sie diese fiddle.

So habe ich diesen

fillHandle: { 
    autoInsertRow: false 
} 

und entfernt minSpareRows: 1.

Dies gibt Ihnen die Drag-Funktionalität ohne die automatische Erstellung von Zeilen.

Zum Test:

Wenn Sie mit der rechten Maustaste und manuell eine Zeile (Insert row below) einzufügen, und klicken Sie dann auf und einen Wert in die neue Zeile ziehen Sie das Ausfüllkästchen verwenden, sollten sie den Wert einfügen in ohne Erstellen einer neuen Zeile darunter.

Hinweis: Wenn Sie die gleiche Funktionalität horizontal (aka, die Möglichkeit, horizontal Werte zu ziehen, ohne Auto-Erstellung neuer Spalten) müssen entfernen minSparecols: 1

Hoffnung ist das, was Sie suchen!


Fügen Sie die Option fillHandle: false zu Ihren aktuellen Optionen hinzu.

Dadurch wird die Möglichkeit zum Ziehen und Erstellen neuer Zeilen entfernt, aber Sie haben weiterhin die Möglichkeit, über das Kontextmenü (contextMenu: true) und die Option für minimale Ersatzzeilen (minSpareRows: 1) neue Zeilen hinzuzufügen.

+0

Hey! Vielen Dank für Ihre Antwort. Ihre Lösung löste das Erstellen neuer Zeilen durch Ziehen, aber auch die Möglichkeit, Daten einfach durch Ziehen in vorhandene Zeilen zu kopieren.Ist es möglich, das Ziehen vorhandener Zeilen zu erlauben, aber das Erstellen neuer Zeilen beim Ziehen abzubrechen? – Dubb

+0

Ich denke, Sie können immer noch mehrere Zeilen ziehen und auswählen, ohne neue zu erstellen. Könntest du ein bisschen mehr erklären? – adriennetacke

+0

Wenn eine Zelle einen Wert hat und ich diese Zelle ziehe, so wie ich sie ziehen würde, wenn sie eine neue Zeile erstellt, erhalten die Zellen darunter den gleichen Wert (wie in Excel). Jetzt, da die gesamte Ziehfunktion weg ist, kann ich diese Funktion nicht mehr verwenden. Durch Ziehen ziehe ich das kleine Kreuzsymbol, wenn Sie an einer Ecke schweben. @adriennetacke – Dubb

3

können Sie diesen Code hinzufügen Reihe Schöpfung zu verhindern, wenn Sie Zellen ziehen:

fillHandle: { 
    autoInsertRow: false, 
}, 
+0

Hallo, Entschuldigung für die späte Antwort. Leider hat deine Antwort es nicht gelöst. Ich sehe keine Änderung in Bezug auf das Problem. Trotzdem danke! – Dubb

+0

Es schien zu funktionieren, aber es ist nicht. –

Verwandte Themen