CJUIDialog不能与CListView寻呼机控制器一起使用

时间:2012-05-29 11:49:07

标签: php yii

我有CListView,里面有一个带有按钮的视图,点击它时会打开一个CJUIDialog。

但是当我使用页面控制器进入下一页时。 CJUIDialog内容加载到页面而不单击按钮。

知道为什么会这样吗?

如果有人能帮助我,那就太好了。 谢谢!

1 个答案:

答案 0 :(得分:1)

好的,Yii以自动方式为很多控件生成id,所以为了避免与事件发生冲突,我建议你按照以下方式从项目视图中取出交互处理:

在生成CListView的页面中:

$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_post',   // refers to the partial view named '_post'
    'sortableAttributes'=>array(
        'title',
        'create_time'=>'Post Time',
    ),
));
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
    'id'=>'dialog',
    'options'=>array(
        'title'=>'Dialog',
        'autoOpen'=>false,
    ),
));
$this->endWidget('zii.widgets.jui.CJuiDialog');

在项目视图页面中:

echo CHtml::htmlButton('Button',array('onclick' => '$("#dialog").dialog("open");'));

如果您需要对数据行执行某些操作(例如使用该数据的id属性),您可以创建一个自定义javascript函数,该函数将在单击该按钮时接收数据。

echo CHtml::htmlButton('Button',array('onclick' => 'myFunction('.$data->id.')'));

之前的例子就是:

<?php
$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_post',   // refers to the partial view named '_post'
    'sortableAttributes'=>array(
        'title',
        'create_time'=>'Post Time',
    ),
));
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
    'id'=>'dialog',
    'options'=>array(
        'title'=>'Dialog',
        'autoOpen'=>false,
    ),
));
$this->endWidget('zii.widgets.jui.CJuiDialog');
?>
<script type="text/javascript">
function myFunction(id) {
    // you can put whatever you need inside the dialog 
    $("#dialog").html(id);
    // open the dialog
    $("#dialog").dialog("open");
}
</script>