Yii 2: Wie lösche ich Daten in der kartik Grid-Ansicht?

8

Die Kartikrasteransicht in yii2 bietet eine Option zum Anzeigen von Kontrollkästchen in der Rasteransicht. Wie lösche ich Massendaten, indem ich die Checkboxen ankreuze? Jede Hilfe wäre großartig. Hier ist mein Code:

%Vor%     
Stark 10.12.2014, 09:37
quelle

2 Antworten

7

1. Fügen Sie eine benutzerdefinierte Klasse oder ID zum pjax-Container hinzu

Fügen Sie entweder Klasse oder ID zu Ihrem pjax Container mit GridView hinzu, so dass Sie nicht von automatisch generierten Klassen und IDs abhängig sind (oder falls Sie mehrere GridView Widgets auf einer Seite haben).

kartik\grid\CheckboxColumn ist nur eine erweiterte Version von yii \ grid \ CheckboxColumn .

kartik\grid\View hat containerOptions , Sie können hier class angeben, es scheint, dass id automatisch generiert wird und nicht mit dieser Eigenschaft geändert werden kann.

%Vor%

Beispiel für generierte Ausgabe:

%Vor%

yii\grid\View\ hat options , Sie können hier id angeben. Der ID des Ergebniscontainers wird der übergebene Wert vorangestellt, z. B.

%Vor%

Generierte Ausgabe:

%Vor%

Die Klasse wird in diesem Fall ignoriert.

Ich empfehle die Angabe von ID.

2. Erstellen oder ändern Sie eine Aktion zum Löschen im Controller

Standardmäßig hat delete action automatisch generiert mit gii eine Weiterleitung, so dass wir erstellen können eine weitere Aktion für das mehrfache Löschen (oder Sie können das in einem handhaben, es liegt an Ihnen).

%Vor%

Beachten Sie, dass alle Datensätze in der Tabelle gelöscht werden, wenn Sie in deleteAll() keine Bedingung angegeben haben. Sei genau damit.

Sie können die Aktion auch in VerbFilter wie folgt angeben:

%Vor%

3. Schreibe etwas Javascript, um alles zusammen zu binden

Sie können Primärschlüssel ausgewählter Zeilen wie folgt erhalten:

%Vor%

Fügen Sie dieses Javascript hinzu (um zum Beispiel auf die Schaltfläche zu klicken):

%Vor%

Sie finden weitere Informationen zum Aktualisieren des GridView mit pjax in diesem Problem . Vielleicht versuchen Sie dies: $('#hotel-pjax-container').yiiGridView('applyFilter'); als Alternative; Schließen Sie js mit Assets oder nur mit registerJs() ;

ein     
arogachev 10.12.2014 11:00
quelle
7

Probieren Sie es aus, ich hoffe, dass Ihnen das hilft, anstatt% cco_de% verwenden Sie kartik\grid\CheckboxColumn

Schritt 1:         Erstellen Sie eine Schaltfläche für mehrere löschen in index.php

%Vor%

Schritt 2: Verwenden Sie in Ihrer index.php (gleiche Seite) dieses Javascript

%Vor%

Diese jquery wird verwendet, um den Wert (id) der ausgewählten Zeile

zu erhalten

Schritt 3: im Controller des Hotels (HotelController.php) Erstellen Sie eine Aktion für das mehrfache Löschen

%Vor%

Versuchen Sie das sicher, das wird Ihnen helfen ...

    
Nodemon 17.08.2015 07:59
quelle

Tags und Links