Yii CGridView限制为90条记录

Yii CGridView限制为90条记录,yii,yii-components,Yii,Yii Components,Yii 1.1.14 当我的表包含超过90条记录时,CGridView将无法加载最新记录。当我删除一些记录,并使总数低于90,它将再次显示我最近的记录 如何让CGridView显示最新记录? 我的模型::search()几乎是现成的。(仅更改:降序排序) 以下是我的观点: <?php Yii::app()->ClientScript->registerScriptFile($this->assetsBase.'/js/plug.note.js', CClientSc

Yii 1.1.14

当我的表包含超过90条记录时,CGridView将无法加载最新记录。当我删除一些记录,并使总数低于90,它将再次显示我最近的记录

  • 如何让CGridView显示最新记录?
我的模型::search()几乎是现成的。(仅更改:降序排序)

以下是我的观点:

<?php

Yii::app()->ClientScript->registerScriptFile($this->assetsBase.'/js/plug.note.js', CClientScript::POS_END);
Yii::app()->clientScript->registerCssFile($this->assetsBase.'/css/x0.css');
Yii::app()->ClientScript->registerCssFile($this->assetsBase.'/fontello/css/fontello.css', 'screen');
Yii::app()->ClientScript->registerCssFile($this->assetsBase.'/fontello/css/animation.css', 'screen');
$this->breadcrumbs=array(
'Ifas'=>array('index'),
'Manage',
);
$this->menu=array(
array('label'=>'List Ifa', 'url'=>array('index')),
array('label'=>'Create Ifa', 'url'=>array('create')),
);

Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
$('.search-form').toggle();
return false;
});
$('.search-form form').submit(function(){
$('#ifa-grid').yiiGridView('update', {
    data: $(this).serialize()
});
return false;
});
// set up polling at interval
$(function() {
    $.fn.note('poll');
});
");
?>
<style>
i.icon-tag, i.icon-wrench {font-size: 18px;}
</style>
<div style="float: left; margin-right: 10px;">Notes (Family Archives)</div>
<div style="float:right; margin-left: 10px;">
<div class="ERR" style="float:left;">
    <input type="radio" name="cls" id="cls3" onclick="$('.row input[name=\'Ifa[cls]\']').val(3).submit();">
    <label for="cls3">error</label>
</div>
<div class="WAR" style="float:left;">
    <input type="radio" name="cls" id="cls2" onclick="$('.row input[name=\'Ifa[cls]\']').val(2).submit();">
    <label for="cls2">warning</label>
</div>
<div class="INF" style="float:left;">
    <input type="radio" name="cls" id="cls1" onclick="$('.row input[name=\'Ifa[cls]\']').val(1).submit();">
    <label for="cls1">info</label> 
</div>
<div class="DBG" style="float:left;">
    <input type="radio" name="cls" id="cls0" onclick="$('.row input[name=\'Ifa[cls]\']').val(0).submit();">
    <label for="cls0">debug</label>
</div>
<div class="" style="float:left; background-color:#CCCCCC;">
    <input type="radio" name="cls" id="cls" onclick="$('.row input[name=\'Ifa[cls]\']').val('').submit();">
    <label for="cls">all</label>
</div>
</div>
<div style="float:right; background-color:#CCCCCC; margin-left: 10px;">
    <input type="radio" name="vis" id="vis1" onclick="$('.row input[name=\'Ifa[vis]\']').val(1).submit();" checked="checked">
    <label for="vis10">visible</label>  
    <input type="radio" name="vis" id="vis0" onclick="$('.row input[name=\'Ifa[vis]\']').val(0).submit();">
    <label for="vis0">invisible</label>    
    <input type="radio" name="vis" id="vis" onclick="$('.row input[name=\'Ifa[vis]\']').val('').submit();">
    <label for="vis">both</label>  
</div>
<div style="float:right; background-color:#CCCCCC; margin-left: 10px;">
    <input type="checkbox" id="poll" onclick="" checked="checked">
    <label for="poll">polling (<span id="lag">?</span> s)</label>  
</div>
<div style="float:right; background-color:#CCCCCC; margin-left: 10px;        "onclick="$.fn.note('max_id')">
max id <span id="max-id">?</span>
</div>

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button', 'style' => 'float:left; font-size: 10px;')); ?>
<div style="clear:both"></div>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
'model'=>$model,
)); ?>
</div><!-- search-form -->

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'ifa-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
    'rowCssClassExpression' => '$data->getRowCssClass()',
'columns'=>array(
    'id',
    'xpl',
    'phpClass',
    'line',
    'function',
    'usr',
    'guessedName',
    'email',
    array(
                'name' => 'cls',
                'visible' => false
            ),
    array(
                'name' => 'vis',
                'visible' => false
            ),
    //'cet',
    //'trace',
    'iconID',
    'albumID',
    'record_created',
    //'timestamp',
    'vrs',
    array(
        'class'=>'CButtonColumn',
                    'template'=>'{view}{delete}{cet}{trace}',
                    'buttons'=>array
                    (
                        'delete' => array
                        (
                            'click'=>"function(){
                                $(this).note('update', {'vis': 0}).note('remove row');
                                return false;}",
                            'url'=>'"#"',
                            'visible'=> '$data->vis > 0',
                        ),
                        'cet' => array
                        (
                            'label'=>'<i class="icon-tag"></i>',
                            'click'=>"function(){
                                $(this).note('modal cet');
                                return false;}",
                            'url'=>'"#"',
                        ),
                        'trace' => array
                        (
                            'label'=>'<i class="icon-wrench"></i>',
                            'click'=>"function(){
                                $(this).note('modal trace');
                                return false;}",
                            'url'=>'"#"',
                            'visible'=> 'strlen($data->trace) > 0',
                        ),
                    ),
    ),
),
)); ?>

将分页设置为false以显示所有记录

return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
        'pagination'=>false,
                    'sort'=>array(
                        'defaultOrder'=>'id DESC',
                    ),
    ));
要仅显示新记录,这就像在电子邮件中显示未读邮件一样。因此,在表中添加新字段为“is_read”,并在插入时为每条记录设置为0

然后,一旦记录读取(第一次查看),您可以将“is_read”设置为1


在gridview条件中,添加一个条件以显示新记录“is_read=0”

您的问题非常混乱,因为您没有正确描述问题。最新的唱片是什么?您的意思是显示列表,在场景后面添加记录,在列表中导航时不显示刚刚添加的记录吗

问题可能是因为查询是缓存的。你可以设置一个条件,比如

return array(
            'condition'=>"1<='".time()."'",
        );
返回数组(

“条件”=>“1您已经更改了您的问题。但是,根据您以前的问题,我的回答是正确的。事实上。重新阅读问题时,问题是矛盾的。新的措辞是我需要知道的。(我已经意识到翻页。)您熟悉(新的)问题?谢谢,但这只会推迟问题。问题是,一旦我的表中的总记录数超过90,Yii CGridView就无法加载最新记录。这种情况永远不会发生,但确实发生了……很奇怪。我不理解您的问题。可能是其他原因导致了此问题。当前页面大小=10(默认值)。是的,CGridView首先显示最新记录。因此该部分工作正常。是的,确实存在问题。感谢您的回答。如果确实发生了此缓存(我将尝试),这是CGridView功能吗?还是此常规缓存?(我不知道我正在使用任何缓存;我肯定从未配置过任何缓存。)不确定将此条件放置在何处。未定义
CGridView.condition
CSort.condition
。请尝试添加到条件$criteria->addCondition('1<:time');$criteria->params[':time']=time();是的,它看起来确实解决了这个问题。你能解释一下这个缓存的位置吗?它是CGridView的一部分吗?为什么当记录总数小于90时它会正确刷新?(这是我认为它不能缓存的原因。)我不确定90条记录的限制是什么,它可能与记录的大小有关。我确实认为您在Yii或MySQL级别启用了缓存。我确定它不是CGridView的一部分。
return array(
            'condition'=>"1<='".time()."'",
        );