我可以从 js 刷新 Yii CGridView 吗?

Posted

技术标签:

【中文标题】我可以从 js 刷新 Yii CGridView 吗?【英文标题】:Can I refresh a Yii CGridView from js? 【发布时间】:2011-03-05 05:11:20 【问题描述】:

当通过 XHR 提交“创建”模式对话框时 然后应该刷新 Yii CGridView 中的行。

我尝试通过在 XHR“创建”操作中渲染新的 gridview 然后通过 $("#list").html(response) 将其插入到页面中来实现这一点,但是渲染 CGridView 会导致 jQuery <script> 包含要注册的标签为了包含,所以当我将这些标签引入页面时,它们会重新加载 jQuery,这会清除我的 live 事件处理程序,所以一堆东西会中断。

这让我想到了,“GridView 知道如何刷新自己。哎呀,它一直在排序或页面上。”

所以我可以从 js 中单击 GridView 中的排序按钮,但这比理想少。我更愿意说

$("#list").gridview('reload') 或 $.fn.gridview.reload("#list") 或类似的意思。

或者做你刚才想到的简单得多的酷事。

【问题讨论】:

【参考方案1】:

执行$.fn.yiiGridView.update("<id of CGridView>");

【讨论】:

这个命令的缺点是它会重置过滤器、排序和分页。因此,如果您按 ID 订购商品,请转到第二页,然后调用此命令,当前屏幕会丢失,您必须再次找到您的商品。 $.fn.yiiListView.update("", data: $("yourcustomselectors").serialize() );

以上是关于我可以从 js 刷新 Yii CGridView 吗?的主要内容,如果未能解决你的问题,请参考以下文章

yii cgridview refresh导致多个ajax调用

Yii CGridView Pager 生成链接错误?

Yii CGridView仅隐藏过滤器输入

Yii:CGridView中dataProvider的格式

Yii:在CGridView中显示第二个DB内容

当Relation是同一张表中的键时,使用CGridView在Yii中按相关模型搜索和排序