2016-08-28 2 views
0

Ich habe versucht, yii \ jui \ Dialog zu erstellen, die beim Klicken auf die Schaltfläche in der Formularansicht ausgelöst wird. Der Dialog selbst enthält ein Gridview Widget mit Yii 2.0.Yii2 Filtern von Gridview im modalen Dialog?

Ich habe es geschafft, das Dialogfeld zu erstellen und es mit dem Gridview Widget zu füllen. Das einzige Problem, das ich erfahre, ist, dass die Gridview innerhalb des Dialogs kann nicht richtig gefiltert werden. der Filterprozess ist zwar in Ordnung, aber jedes Mal, wenn ich das Gridview filterte, wird auch das Dialogmodal geschlossen.

Ich habe auch versucht, Pjax zu verwenden, indem Sie die Gridview in Pjax-Widget kapseln. Diesmal wird der modale Dialog nicht geschlossen. aber dann kann es nur 1 mal filtern. Sobald die Gridview gefiltert ist, können wir sie nicht mehr filtern.

unten ist mein "_form" Ansicht: (i Taste bin mit "cari", rief der Pop-up-Dialog auszulösen)

<?php $form = ActiveForm::begin(); ?> 

<?= $form->field($model, 'judul')->textInput(['maxlength' => true]) ?> 

<?= $form->field($model, 'isi')->textarea(['rows' => 6]) ?> 

<?= $form->field($model, 'kategori_id', [ 
    'addon' => ['append' => 
        ['content'=> 
         Html::button('x', ['class'=>'btn btn-default','name' => 'del_kat', 'id' => 'del_kat', 'onclick' => '$("#kat_id").val("");']) . PHP_EOL . 
         Html::button('Cari', ['class'=>'btn btn-primary','id' => 'modal_kat', 'onclick' => '$("#kategori_dialog").dialog("open"); return false;' ]), 

         'asButton' => true 
        ] 
       ] 
])->textInput(['id'=> 'kat_id', 'readonly' => true]) ?> 

hier ist mein Grid Code:

GridView::widget([ 
    'dataProvider' => $kategoriModel->search(Yii::$app->request->queryParams), 
    'filterModel' => $kategoriModel, 
    'columns' => [ 
     'kategori_id', 
     'nama', 
     [ 
      'label' => 'test', 
      'format' => 'raw', 
      'value' => function ($data) { 

       return Html::button('+', ['class'=>'btn btn-default','id' => 'modal_kat', 'onclick' => '$("#kategori_dialog").dialog("close"); $("#kat_id").val("'.$data->kategori_id.'");' ]); 
      }, 
     ], 


    ], 

]); 

und hier ist Dialog Code:

wie ihr sehen könnt, ich habe versucht zu verwenden Pjax, aber ich konnte es nicht wie erwartet funktionieren lassen (wie ich nur die Gridview einmal filtern kann, dann kann es wieder gefiltert werden). Ich erinnere mich, dass ich das in Yii 1.1 gut gemacht habe (ich benutzte CJuiDialog zurück).

so frage ich mich, ob ich etwas hier in Yii 2.0 fehlt? Ich bin ein wenig neu in Pjax-Sachen, also glaube ich, dass ich einige Eigenschaften vermisse, die im Pjax-Widget eingestellt werden müssen.

+0

Können Sie alle Inhalte anzeigen und anzeigen? –

+0

yup, sollte es überhaupt kein Problem sein. Alle Funktionen sind in Ordnung. Das einzige Problem für mich ist, dass die Gridview im Modal-Dialog gefiltert werden kann. Ich denke, es hat etwas mit Pjax-Containern zu tun, die aktualisiert/neu geladen werden sollten, aber ich untersuche es immer noch. – rangganovsky

Antwort

0

In meinem Fall ist die Lösung dafür mit Kartik Gridview. Ich habe es installiert und die Pjax-Eigenschaft auf true gesetzt.

use kartik\grid\GridView; 
GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'filterModel' => $model, 
    'columns' => $gridColumns, 
    'pjax' =>true, 
]); 

und jetzt kann ich erfolgreich das Raster innerhalb des Dialogs filtern. Es sieht so aus, als hätte Kartik eine bessere Implementierung, wenn das Grid mit Pjax Container umschlossen wird.

Verwandte Themen