Yii CGridView分页的javascript事件

5
我正在使用jQuery扩展Yii中的CGridView,以记住切换页面时选中的行。页面是使用AJAX加载的,因此我认为当请求完成并且新页面已呈现时,我的代码应该介入并发挥作用。但是,我似乎找不到任何文档表明在新页面完成呈现时会触发事件或其他操作。
然而,我可以使用DOM监听器,但我认为最好使用一个用于整个页面的事件。
1个回答

13

如果您的页面是使用ajax加载的,您可以使用afterAjaxUpdate

$this->widget('zii.widgets.grid.CGridView', array(
    // ... options ...
    'ajaxUpdate'=>true,
    'afterAjaxUpdate'=>'aFunctionThatWillBeCalled', //
    // ... more options ...
));

您可以这样添加js函数:

Yii::app()->clientScript->registerScript('some-script-id','function aFunctionThatWillBeCalled(id, data){
    console.log("id is "+id);
    // your jquery code to remember checked rows
}');

我是yii世界的新手,你能详细解释一下这段代码吗?Yii::app()->clientScript->registerScript('some-script-id','function aFunctionThatWillBeCalled(id, data){ console.log("id is "+id); // your jquery code to remember checked rows }'); - Ulug'bek
@UlugbekKomilovich,我一定会解释的,但首先你必须告诉我你不理解那些行的哪些部分? - bool.dev
我明白了aFunctionThatWillBeCalled是什么,它必须等于小部件的afterAjaxUpdate函数,只是我一无所知。 - Ulug'bek
@UlugbekKomilovich,请先查看registerScript的文档。registerScript用于方便地向视图中添加JavaScript代码,在文档中还可以看到其他参数,比如$position,它可以将JavaScript代码添加到最终HTML中的适当位置。在上面的示例中,定义了一个名为aFunctionThatWillBeCalled的函数,并通过registerScript将其添加到视图中。 - bool.dev
此外,在小部件的 afterAjaxUpdate 中,我们可以只传递函数名称,而不是传递整个函数定义。 - bool.dev
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接