[英]How to hide cgridview filter with Yii?
問:如何在CGridView中隱藏列?
狀態:我關注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"> </th><th style="width:0px; display:none; border:none; textdecoration:none" id="acc-recei-grid_c3"> </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> </td><td> </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>
對於您的特定示例,您可以使用純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");
});
我想過濾器<td>
仍在顯示,這就是為什么您仍要顯示該列的原因。 這里有有關擴展CGridColumn的文檔,以便能夠在此處的過濾器行上設置htmloptions。
在模型中,您可以將函數定義為:
function getCategoryTextWithId()
{
return "<span style='display:none'>$this->id</span>" . ...
}
然后,在CGridView的列定義中,您可以像調用其他任何屬性一樣調用此函數。
您可以重用表達式,並避免呈現其他列。
嘗試將'filterPosition'=>'none'和'pager'=> array('header'=>'')添加到CGridView Widget屬性中,如下所示:
<?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',
),
),
)); ?>
1.在CGridview中隱藏過濾器
.items tr.filters {顯示:無;}
2.隱藏“高級搜索”鏈接
a。搜索按鈕{顯示:無;}
3.在CGridview中隱藏摘要(例如,顯示13個結果中的1-10。)
.grid-view .summary {顯示:無;}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.