当前位置: 首页 > 知识库问答 >
问题:

Yii2在模态对话框中过滤Gridview?

佴保臣
2023-03-14

我一直在尝试创建yii\jui\对话框,该对话框在表单视图中单击按钮时触发。对话框本身将包含一个使用Yii 2.0的Gridview小部件。

我已经成功地创建了这个对话框,并用Gridview小部件填充它。我遇到的唯一问题是对话框中的Gridview无法正确过滤。虽然过滤过程很好,但每次过滤Gridview时,对话框模式也将关闭。

我还尝试通过在Pjax小部件中封装gridview来使用Pjax。这一次模式对话框将不会关闭。但它只能过滤1次。一旦过滤了Gridview,我们就不能再过滤它了。

下面是我的_form视图:(我使用名为cari的按钮来触发弹出对话框)

<?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]) ?>

以下是我的GridView代码:

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.'");' ]);
            },
        ],


    ],

]);

这里是对话框代码:

Dialog::begin([
'id' => 'kategori_dialog',
'clientOptions' => [
    'modal' => true,
    'autoOpen'=>false,
     'title'=>'List Kategori',
     'width'=>'auto',
],

]);

Pjax::begin(['id' => 'kategori-pjax', 'enablePushState'=>false]);
echo $kategoriGrid;
Pjax::end(); 

Dialog::end();

正如你们所看到的,我试图使用Pjax,但我不能让它像预期的那样工作(因为我只能过滤一次Gridview,然后它可以再次过滤)。

所以我想知道我是否在Yii 2.0中错过了什么?我对Pjax有点陌生,所以我想我错过了一些必须在Pjax小部件中设置的属性。

共有1个答案

何向荣
2023-03-14

在我的例子中,解决这个问题的方法是使用Kartik的Gridview。我安装了它并将Pjax属性设置为true。

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

现在我可以在对话框中成功地过滤网格了。在用Pjax容器包装网格时,Kartik似乎有更好的实现。

 类似资料:
  • 模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是 Qt 所 独有的,在各种不同的平台下都存在。又有叫法是称为模式对话框,无模式对话框等。 所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进 行交互,直到该对话框关闭。对于非模 态对话框,当被打开时,用户既可选择和该对话框进 行交互,也可以选择同应用程序的其他窗口交互。 在 Qt

  • 我正在尝试这样做: > 通过URL打开带按钮的引导对话框。控制器中Url的动作是。 通过打开对话框,这将加载一个页面(),其中包含一个表单来填充数据(表单有一个提交按钮)。 如果我通过点击按钮提交表单,在我的控制器中,我尝试关闭对话框并刷新原始页面中的一些内容,这是我用JS做的。但它不起作用。我总是用新的URL在空白处获得窗口导航器;我希望保留调用对话框的原始页面,以查看更改,方法与。 控制器的代

  • 问题内容: 简而言之:有什么方法可以创建非模式JFace对话框?我试图打电话无济于事。如果我没记错的话,这不是摇摆问题- 这是SWT的缺点,还是我只是在滥用小部件? TIA 问题答案: 使用 似乎是惯例。这对您不起作用吗?

  • 5.4.1 非模态对话框的特点 与模态对话框不同,非模态对话框不垄断用户的输入,用户打开非模态对话框后,仍然可以与其它界面进行交互。 非模态对话框的设计与模态对话框基本类似,也包括设计对话框模板和设计CDialog类的派生类两部分。但是,在对话框的创建和删除过程中,非模态对话框与模态对话框相比有下列不同之处: 非模态对话框的模板必须具有Visible风格,否则对话框将不可见,而模态对话框则无需设置

  • 本文向大家介绍详解AngularJS 模态对话框,包括了详解AngularJS 模态对话框的使用技巧和注意事项,需要的朋友参考一下 在涉及GUI程序开发的过程中,常常有模态对话框以及非模态对话框的概念 模态对话框:在子界面活动期间,父窗口是无法进行消息响应。独占用户输入 非模态对话框:各窗口之间不影响 主要区别:非模态对话框与APP共用消息循环,不会独占用户。 模态对话框独占用户输入,其他界面无法

  • 问题内容: 目前我的模态对话框是这样的 加载的Div包含在同一页面中。显示对话框时,如何将div移至第二页并通过Ajax加载内容?是否可以根据需要重用脚本来加载不同的内容? 问题答案: 看看Nemikor的这篇博客文章,它应该做您想要的。 http://blog.nemikor.com/2009/04/18/loading-a-page-into-a- dialog/ 基本上,在调用“打开”之前,