$ fn.yiiGridView.update调用多个网格

时间:2014-04-02 13:58:41

标签: ajax yii

在视图中,我显示两个带有数据的网格。 用户可以通过以下方式提交数据:

  1. 使用同一页面中显示的表单发送数据
  2. 在提交时,表单数据通过ajax调用发送到控制器
  3. ajax调用具有成功执行的回调

    $.fn.yiiGridView.update("grid1");
    $.fn.yiiGridView.update("grid2");
    

    因为两个网格都会通过提交的表单更改其数据。

  4. $ .fn.yiiGridView.update方法将通过检索同一页面并提取所需内容来更新网格。

    在这种特殊情况下,它会发生两次,这就需要找到一种方法来避免这种额外的呼叫并减少不必要的流量。

    有没有办法修改yiiGridView回调以通过一次调用更新两个网格? 我试图破解这些方法,但没有成功。

1 个答案:

答案 0 :(得分:2)

好的,经过一番努力,我找到了解决方案。

我意识到在yiiGridView文档(jquery.gridview.js第39行)中有一个名为ajaxUpdate的字段:

  

ajaxUpdate:array,其内容可能由ajax响应更新的容器的ID

此值是从CGridView参数(http://www.yiiframework.com/doc/api/1.1/CGridView#ajaxUpdate-detail

中提取的

所以我定义了

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'grid1', //or could be grid2
    'dataProvider' => $model->search(),
    'ajaxUpdate'=>'grid1,grid2', //string separated with commas
    ......
));

现在只需拨打

即可
$.fn.yiiGridView.update("grid1"); //or grid2 if you set ajaxUpdate in grid2

两个网格都会更新。

我想知道是否有办法使用gridview函数的options参数覆盖值(使用$('#grid1')。yiiGridView('update',options)语法)