Дополнительная ссылка в GridView

Я использую gridview для отображения набора данных. Все работает отлично, за исключением того, что я не имею ни малейшего понятия о том, как реализовать ссылку на чтение в сетке. Ниже приведен код для представления, я использую Yiibooster TbGridView, но код должен быть почти идентичным и для CGridview.

<?php $this->widget('bootstrap.widgets.TbGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
         'startdate'
         'status',
          'description',
         array(
        'htmlOptions' => array('nowrap'=>'nowrap'),
        'class'=>'bootstrap.widgets.TbButtonColumn',
        'template' => '{view},{update}',
            'viewButtonUrl'=>'Yii::app()->createUrl("status/view",$params=array("id"=>$data["id"]))',
            'updateButtonUrl'=>'Yii::app()->createUrl("status/update",$params=array("id"=>$data["id"]))',
    )
    )))
    ?>

Здесь я не хочу отображать полное описание, но его подстроку и, кроме того, кнопку под названием "читать дальше", которую пользователь может щелкнуть, чтобы отобразить все "описание". Есть идеи как это реализовать?

2 ответа

Решение
<?php $this->widget('bootstrap.widgets.TbGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
     'startdate'
     'status',
      array(
            'name' => 'description'
            'value' => 'substr($data->description,0,100)."...<div class=more-data>$data->description</div><a href=javascript:void(0); id=readMore>Read More</a>',
            'type' => 'raw',
        ),
     array(
    'htmlOptions' => array('nowrap'=>'nowrap'),
    'class'=>'bootstrap.widgets.TbButtonColumn',
    'template' => '{view},{update}',
        'viewButtonUrl'=>'Yii::app()->createUrl("status/view",$params=array("id"=>$data["id"]))',
        'updateButtonUrl'=>'Yii::app()->createUrl("status/update",$params=array("id"=>$data["id"]))',
)
)))
?>

Не беспокойтесь о кавычках вокруг свойств HTML-тегов. он будет добавлен в браузер автоматически. после этого сделать некоторые CSS-твики

<style type='text/css'>
 .more-data{ display:none}
</style>

затем, нажав jquery на этот якорный тег с именем read more, вы можете сделать блок отображения для этого элемента или добавить любой эффект, какой захотите.

Возможно, это поможет вам

Попробуй это

<?php $this->widget('bootstrap.widgets.TbGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
     'startdate'
     'status',
     array(
                'value' => 'Model::function($data->description)',
                'type' => 'raw',
                'name' => 'description'
            ),
     array(
    'htmlOptions' => array('nowrap'=>'nowrap'),
    'class'=>'bootstrap.widgets.TbButtonColumn',
    'template' => '{view},{update}',
        'viewButtonUrl'=>'Yii::app()->createUrl("status/view",$params=array("id"=>$data["id"]))',
        'updateButtonUrl'=>'Yii::app()->createUrl("status/update",$params=array("id"=>$data["id"]))',
)
)))
?>

замените модель на имя модели и функцию с функцией в этой модели и передайте соответствующие параметры.

затем в этой функции используйте substr() и добавьте ссылку на страницу, где доступно полное описание, и верните всю строку

Другие вопросы по тегам