0

问:如何通过 ajax 从 cjuidialogbox 传递数据?

状态:我通过 cjuidialogbox 创建了一个弹出框。当用户从弹出框的 cgridview 中选择客户名称时,通过 ajax 将客户代码传递给功能。堆叠在这里 url: \'' 。Yii::app()->createUrl("job/getjobno", array("c_code" => $data->c_code)) 。'\',帮我传递数据。

这是 cjui 对话框

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

这是_listing.php

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'customer-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'customer_name',
        array(
            'class'=>'CButtonColumn',
            'template'=>'{select}',
            'buttons'=>array
            (
                'select' => array
                (
                    'imageUrl'=>Yii::app()->request->baseUrl.'/protected/assets/images/gridview/icon_select.gif',
                    'options'=>array('style'=>'width:10px; border:none'),
                    'click'=>'function(){
                        var itemID = $(this).parents(\'tr\').find(\'.customer-id\').text();
                        //alert(itemID);
                        $.ajax({
                            url: \'' . Yii::app()->createUrl("job/getjobno", array("c_code" => $data->c_code)) . '\',
                            dataType: \'json\',
                            success: function(data){
                                var target = $(vNode).parents(\'tr\');
                                $("#Job_name").val(itemID); 
                                //console.log(\'target tr: \' + target);
                                //$(target).find(\'.item-price\').val(data.item_price);

                            }
                        });                     
                        $("#customerlist").dialog("close");

                    }',
                ),      
            ),
        ),
        array(
            'type'=>'raw',
            'value'=>'$data->c_code',
            //'filter'=>array('style'=>'visible:none'), 
            'headerHtmlOptions'=>array('style'=>'width:0px; display:none; border:none; textdecoration:none'),
            'htmlOptions'=>array('style'=>'display:none; border:none;', 'class'=>'customer-id'),  
            'header'=>false,
            'filter'=>false,
        ),
    ),
)); ?>
4

1 回答 1

3

试试这个方法:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'customer-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'customer_name',
        array(
            'class'=>'CButtonColumn',
            'template'=>'{select}',
            'buttons'=>array
            (
                'select' => array
                (
                    'url'=>'Yii::app()->createUrl("job/getjobno", array("c_code"=>$data->c_code))', 
                    'imageUrl'=>Yii::app()->request->baseUrl.'/protected/assets/images/gridview/icon_select.gif',
                    'options'=>array('style'=>'width:10px; border:none'),
                    'click'=>'function(){
                        var itemID = $(this).parents(\'tr\').find(\'.customer-id\').text();
                        //alert(itemID);
                        $.ajax({
                            url:$(this).attr("href"),
                            dataType: \'json\',
                            success: function(data){
                                var target = $(vNode).parents(\'tr\');
                                $("#Job_name").val(itemID); 
                                //console.log(\'target tr: \' + target);
                                //$(target).find(\'.item-price\').val(data.item_price);

                            }
                        });                     
                        $("#customerlist").dialog("close");

                    }',
                ),      
            ),
        ),
        array(
            'type'=>'raw',
            'value'=>'$data->c_code',
            //'filter'=>array('style'=>'visible:none'), 
            'headerHtmlOptions'=>array('style'=>'width:0px; display:none; border:none; textdecoration:none'),
            'htmlOptions'=>array('style'=>'display:none; border:none;', 'class'=>'customer-id'),  
            'header'=>false,
            'filter'=>false,
        ),
    ),
)); ?>

参考:

1.http://www.yiiframework.com/wiki/410/create-custom-button-button-with-ajax-function-in-cgridview/

2.http://www.yiiframework.com/wiki/106/using-cbuttoncolumn-to-customize-buttons-in-cgridview/

于 2012-12-18T09:25:57.990 回答