2

Q : CGridView で列を非表示にする方法は?

status : yii フォーラムの投稿をたどって、ここここのように列を非表示にしました。しかし、私のグリッド ビューでは、右側の列が非表示になりませんでした。空白として表示されます。

これは私のビューコードです

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'acc-recei-grid',
    'dataProvider'=>$model->search_arlist(),
    'filter'=>$model,
    'columns'=>array(
        array('name' => 'acc_category_id',
               'value'=>'(isset($data->acccategories->name)) ? CHtml::encode($data->acccategories->name) :""',
               'filter'=>CHtml::listData($acccategory, 'id', 'name'),
        ),
        //'customer_id',
        //'date',
        array('name' => 'job_id',
               'value'=>'(isset($data->jobs->name)) ? CHtml::encode($data->jobs->name) :""',
               //'filter'=>CHtml::listData($job, 'id', '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(\'.recei-id\').text();
                        $("#AccPaymentRecei_acc_recei_id").val(itemID); 
                        $("#accreceilist").dialog("close");

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

しかし、グリッドビューはこのように表示されます

ここに画像の説明を入力

======更新

<div id="acc-recei-grid" class="grid-view">
<div class="summary">Displaying 1-1 of 1 result(s).</div>
<table class="items">
<thead>
<tr>
<th id="acc-recei-grid_c0"><a href="/mmaig_ceo/ceo-control-system/accRecei/Accreceilist?AccRecei_sort=acc_category_id">Acc Category</a></th><th id="acc-recei-grid_c1"><a href="/mmaig_ceo/ceo-control-system/accRecei/Accreceilist?AccRecei_sort=job_id">Job</a></th><th class="button-column" id="acc-recei-grid_c2">&nbsp;</th><th style="width:0px; display:none; border:none; textdecoration:none" id="acc-recei-grid_c3">&nbsp;</th></tr>
<tr class="filters">
<td><select name="AccRecei[acc_category_id]">
<option value=""></option>
<option value="1">asdfasdf</option>
</select></td><td><input name="AccRecei[job_id]" type="text" maxlength="11" /></td><td>&nbsp;</td><td>&nbsp;</td></tr>
</thead>
<tbody>
<tr class="odd"><td>asdfasdf</td><td>asdf</td><td class="button-column"><a style="width:10px; border:none" class="select" title="select" href="#"><img src="/mmaig_ceo/ceo-control-system/protected/assets/images/gridview/icon_select.gif" alt="select" /></a></td><td style="display:none; border:none;" class="recei-id">1</td></tr>
</tbody>
</table>
<div class="keys" style="display:none" title="/mmaig_ceo/ceo-control-system/AccRecei/Accreceilist"><span>1</span></div>
</div>
4

5 に答える 5

4

特定の例では、純粋なcssを使用できます。

#acc-recei-grid td:last-child, #acc-recei-grid th:last-child {display: none}

ただし、非表示の列を使用するよりも、JavaScriptでモデルIDを取得する方が良い方法があります。

$('.yourButtonColumnCssClass').live('click', function() {
    var id = $.fn.yiiGridView.getKey(
        'acc_category_id',
        $(this).closest('tr').prevAll().length 
    );
    $("#AccPaymentRecei_acc_recei_id").val(id); 
    $("#accreceilist").dialog("close");
});
于 2012-09-06T09:41:10.177 に答える
0

フィルタ<td>がまだ表示されていると推測しているので、列がまだ表示されています。ここに、フィルター行にhtmloptionsを設定できるようにCGridColumnを拡張するためのドキュメントがあります。

http://www.yiiframework.com/forum/index.php/topic/20693-cgridcolumnfilterhtmloptions-missing-property/

于 2012-09-06T09:44:12.603 に答える
0

1. CGridview でフィルターを非表示にする

.items tr.filters{ 表示: なし;}

2.「高度な検索」リンクを非表示にする

a.search-button{ 表示: なし;}

3. CGridview で概要を非表示にします (例: 13 件中 1-10 件を表示)。

.grid-view .summary{ 表示: なし;}

于 2014-07-22T09:22:20.723 に答える
0

モデルでは、関数を次のように定義できます。

function getCategoryTextWithId()
{
  return "<span  style='display:none'>$this->id</span>" . ...
}

次に、CGridView の列定義で、この関数を他のプロパティと同じように呼び出すことができます。

式を再利用して、追加の列をレンダリングすることを避けることができます。

于 2012-11-02T23:10:39.240 に答える
0

'filterPosition'=>'none' および 'pager'=>array('header'=>'') を次のように CGridView ウィジェット プロパティに追加してみてください。

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'model-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'ajaxUpdate'=>false,
'filterPosition'=>'none',
'template'=>'{items}{summary}{pager}',
'pager'=>array('header'=>''),
'columns'=>array(
    'id',
    'name',
    'description',
    array(
        'class'=>'IButtonColumn',
    ),
),
)); ?>
于 2013-01-28T15:55:33.700 に答える