0

Gridview で新しい Windwon をポップアップする方法は?

利用者がgridviewの返金ボタンをクリックした際に、ポップアップボックスにデータを表示したいと考えています。どのようにできるのか?

これは私のグリッドビューです

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'advance-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(

        array('name' => 'acc_category_id',
               'value'=>'(isset($data->acccategories->name)) ? CHtml::encode($data->acccategories->status) :"Not Set"',
               'filter'=>CHtml::listData($acccate, 'id', 'name'),
        ),
        array('name' => 'accmain_id',
               'value'=>'(isset($data->accmains->name)) ? CHtml::encode($data->accmains->name) :"Not Set"',             
               'filter'=>CHtml::listData($accmain, 'id', 'name'),
        ),
        array('name' => 'job_id',
               'value'=>'(isset($data->jobs->name)) ? CHtml::encode($data->jobs->name) :"Not Set"',             
               //'filter'=>CHtml::listData($job, 'id', 'name'),
        ),
        'currency',
        'amount',


        array('name' => 'created_date',
               'value'=>'Yii::app()->dateFormatter->format("d MMM y",strtotime($data->created_date))',              
              // 'filter'=>CHtml::listData($job, 'id', 'name'),
        ),
        array(
            'class'=>'CButtonColumn',
            'template'=>'{update} {delete} {refund}',
            'buttons'=>array
            (   

                'update' => array
                (
                    'imageUrl'=>Yii::app()->request->baseUrl.'/protected/assets/images/gridview/edit.gif',
                    'options'=>array('style'=>'width:10px; border:none;'),
                    'url'=>'Yii::app()->createUrl("advance/update", array("id"=>$data->id))',
                ),
                'delete' => array
                (
                    'imageUrl'=>Yii::app()->request->baseUrl.'/protected/assets/images/gridview/delete.gif',
                    'options'=>array('style'=>'width:10px; border:none;'),
                    'url'=>'Yii::app()->createUrl("advance/delete", array("id"=>$data->id))',
                ),   

                'refund' => array
                (
                    'type'=>'raw',
                    'imageUrl'=>Yii::app()->request->baseUrl.'/protected/assets/images/gridview/icon_refund_loans2.gif',
                    'options'=>array('style'=>'width:10px; border:none;'),
                    'url'=>'Yii::app()->createUrl("advance/view", array("id"=>$data->id))',
                ),  


            ),
        ),
    ),
    'htmlOptions' => array(
        //'class' => 'table table-bordered table-striped table_vam grid_widget',
    ),
)); ?>

<div id="loadingdiv" style="float:right; margin-right:160px;">&nbsp;</div>
            <div id="jobslist"></div>

=====================================

アップデート

次の方法でグリッドを更新し、firebug で確認すると、firebug にデータが表示されます。ポップアップを表示しません。

array(
            'header'=>'Refund',
            'type'=>'raw',
            'value'=>'CHtml::ajaxLink($data->id, array("advance/jobslist", "id"=>$data->id), array("onclick"=>\'$("#jobslist").dialog("open"); return false;\'));',

        ),

これがコントローラー

public function actionJobslist()
    {
        $model=new Job('search');
        $model->unsetAttributes();  // clear any default values
        if(isset($_GET['Customer']))
            $model->attributes=$_GET['Customer'];

        if(isset($_GET['AccRecei']))
            $accrecei->attributes=$_GET['AccRecei'];

        $this->renderPartial('jobs_listing',array('model'=>$model),false,true);

    }

これは view/jobs_listing.php です

<?php 
$this->beginWidget('zii.widgets.jui.CJuiDialog',array(
                'id'=>'jobslist',
                'options'=>array(
                    'title'=>Yii::t('job','Jobs List'),
                    'autoOpen'=>true,
                    'modal'=>'true',
                    'width'=>'750',
                    'height'=>'500',
                ),
                ));
echo $this->renderPartial('_jobs_listing', array('model'=>$model)); ?>
<?php $this->endWidget('zii.widgets.jui.CJuiDialog');?>

どうすればいいですか?

4

2 に答える 2

1
array(
            'header'=>'Refund',
            'type'=>'raw',
            'value'=>'CHtml::link($data->id, array("id"=>$data->id, 'class'=>'view-popup'));',
        ),

そしてJavaScriptを挿入します:

$('.view-popup').live('click', function() {
        var id = $(this).attr('id');
        window.open("<?php echo 'http://'.$_SERVER['HTTP_HOST'].'/your_path/id/'; ?>" + id,'popUpWindow','height=800,width=1000,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes');
        return false; 
    });
于 2013-01-28T08:30:16.033 に答える
0

グリッドの内側

array(
            'header'=>'Refund',
            'type'=>'raw',
            'value'=>'CHtml::ajaxLink($data->id, array("advance/jobslist", "id"=>$data->id), array(
            "onclick"=>"$(\"#jobslist\").dialog(\"open\"); return false;","update"=>"#jobslist",
            "beforeSend" => "function() {           
                $(\"#loadingdiv\").addClass(\"ajaxloading\");
            }",
            "complete" => "function() {
                $(\"#loadingdiv\").removeClass(\"ajaxloading\");
            }", 
            ),array("id"=>"showcustomerlist2"));',

        ),

グリッドの外

<div id="loadingdiv" style="float:right; margin-right:160px;">&nbsp;</div>
            <div id="jobslist2"></div>
于 2013-01-27T17:37:44.850 に答える