将ID传递给CGridView

时间:2013-12-19 08:14:09

标签: yii

如何从CGridView传递网格行id以过滤在Dialog

中打开的另一个CGridView中的值

enter image description here

我的表单网格视图代码(见截图),

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

    'columns'=>array(           
    array(
                         'class' => 'CButtonColumn',
                         'template' => '{edit}{DocumentDelete}',
                         'buttons' => array(
                            'DocumentDelete' => array(
                            'imageUrl'=>Yii::app()->request->baseUrl.'/images/delete.png',
                             'url'=>'Yii::app()->createUrl("baseContact/DocumentDelete", array("id"=>$data->crm_document_id))',

                            ),
                             'edit' => array(
                            'imageUrl'=>Yii::app()->request->baseUrl.'/images/update.png',
                             'url'=>'Yii::app()->createUrl("baseContact/edit", array("id"=>$data->crm_document_id))',

                            ),
                     ),),
       'crm_document_id',
        'name',
        'doc_type',
        'delivery_method',
        'content_subject',
        'content_body',
        'is_active',

    ),

)); ?>

查看弹出网格代码,

    <?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'ManagedocumentAttach-grid',
    'dataProvider'=>DocumentAttachmentModel::model()->search(),
    //'filter'=>$model,
    'columns'=>array(
    array(
        'name'=>'',            
        'value'=>'CHtml::checkBox("cid[]",null,array("value"=>$data->crm_document_attachment_id,"id"=>"cid_".$data->crm_document_attachment_id))',
        'type'=>'raw',
        'htmlOptions'=>array('width'=>5),
        //'visible'=>false,
        ),      
       'crm_document_id',
        'name',
        'type',

    ),

)); ?>

如何将Form编辑的行ID传递给Popup GridView?

2 个答案:

答案 0 :(得分:1)

显然,您使用AJAX来获取弹出窗口,因此我首先要确保编辑按钮的ID与您要打开的项目中的ID相同。然后你可以做以下JS(使用JQUERY)

$(".edit").on("click", function() {
    var id = $(this).attr("id");
    $.ajax({
        type:"POST",
        url: "controller/action/"+id;
        success: function(data) {
             //open dialog box and fill it with data
        }
});

您还可以将id添加为数据,这样您就可以使用$_POST来获取它,而不是将其作为函数定义的变量。如果你在php文档中编写JS,你可以使用$this->createUrl,但这只是你喜欢的。

如果使用此功能无法解决问题,请告诉我们您现在是如何实施的。

答案 1 :(得分:0)

我不确定......但我有一种技术可以做到...... 如果我必须这样做......

我将通过htmlOptions提供课程,之后我将获得值,这应该是打开弹出窗口的ID ..

示例

  <?php $this->widget('bootstrap.widgets.TbGridView', array(
           'dataProvider' => $dataProvider ,
           'type' => TbHtml::GRID_TYPE_BORDERED,
           'template' => "{items}",
           'columns' => array(
                array(
                    'name' => 'vendor_configuration_id',
                    'header' => $dataProvider->model->getAttributelabel('vendor_configuration_id'),
                    'htmlOptions' => array('class'=>'idClass'),

                ),
                array(
                    'name' => 'menu_type',
                    'header' => $dataProvider->model->getAttributelabel('menu_type'),
                    'htmlOptions' => array(),
                ),

?> 

现在jquery为它

$('.idClass').on("click",function(){

var neededId = $(this).html();

 alert(neededId );     

//基于此id或caal ajax打开弹出窗口以根据此

检索数据
});