我有一个父子子视图布局的视图。在父视图中,我有一个来自YiiBooster扩展的GridView,它列出了db中的所有人员:
$this->widget('bootstrap.widgets.TbGridView', array(
'dataProvider' => $model->search(),
'filter' => $model,
'ajaxUpdate' => true,
'selectionChanged' => "updateChild", // new code
'columns' => array(
'firstName', 'lastName'
)
));
它没有id,默认情况下分配一个,即yw0。
在selectionChanged上调用的updateChild js方法获取一个人的所有信息,并使用$('#childView')。html(data)使用信息更新子视图。如果为父GridView提供了一个显式ID,如下所示:
$this->widget('bootstrap.widgets.TbGridView', array(
'id' => 'parentGrid' // explicit id
'dataProvider' => $model->search(),
'filter' => $model,
'ajaxUpdate' => true,
'selectionChanged' => "updateChild", // new code
'columns' => array(
'firstName', 'lastName'
)
));
子视图不会更新相关数据。我查看了源代码,控制器中的函数工作正常,并将所有相关数据传回,这是一个渲染问题,他们拒绝显示。
另外,如果我的子视图中有另一个GridView(例如列出一个人所属的各种不同类别),那么在尝试点击一个人时会出现以下错误: “无法读取属性tableClass of undefined”。
我的子视图是局部视图,因此使用了renderPartial()。我允许它加载更多脚本,因为我的子视图在子视图中的各种元素上有点击事件的js监听器。
有没有人对于发生了什么有任何想法?感谢。
编辑:我现在已经使用明确的ID了,我从另一个问题得到答案。但是“无法读取属性tableClass of undefined”问题仍然存在。似乎当我想通过renderPartial()将GridView放入我的子视图时,它会在父视图中弄乱GridView。