【问题标题】:customize sort up/down Yii CGridView button自定义排序向上/向下 Yii CGridView 按钮
【发布时间】:2012-12-11 04:10:03
【问题描述】:

所以,我想在我的 CGridView 中创建一个新按钮。这是向上和向下箭头按钮,用于对我的文章进行排序。我已经阅读了很多如何制作这种按钮的文章。我已经在this link 中阅读了有关如何使用此 CGridView 按钮的 wiki。

现在我认为这是:

array(
                'header' => 'Action',
                'class' => 'CButtonColumn',
                'template' => '{moveup}{movedown}{view}{delete}',
                'htmlOptions' => array('style' => 'width: 68px'),
                'buttons' => array
                    (
                    'moveup' => array
                        (
                        'label' => 'Move Up',
                        'imageUrl' => Yii::app()->request->baseUrl . '/images/move_up.png',
                        'url' => 'Yii::app()->createUrl("KB/moveup", array("id"=>$data->KBID))',
                        'visible' => '$data->KBORDER == KB::model()->getMax()',
                    ),
                    'movedown' => array
                        (
                        'label' => 'Move Down',
                        'imageUrl' => Yii::app()->request->baseUrl . '/images/move_down.png',
                        'url' => 'Yii::app()->createUrl("KB/movedown", array("id"=>$data->KBID))',
                        'visible' => '$data->KBORDER == KB::model()->getMin()',
                    ),
                ),
            ),

还有这个在我的模型中:

    public function getMax(){
            $sql = 'SELECT MAX(KBORDER) FROM KB';
            $max = Yii::app()->db->createCommand($sql);
            $max->queryAll();
            return $max;
        }

        public function getMin(){
            $sql = 'SELECT MIN(KBORDER) FROM KB';
            $min = Yii::app()->db->createCommand($sql);
            $min->queryAll();
            return $min;

}

所有代码都运行良好。除了能见度。我想让向上按钮在其具有最高 KBORDER 值或位置位于第一位置时变得不可见。而对于向下按钮,当它具有最低的 KBORDER 值或它的位置在最后一个位置时,它也应该是不可见的。但是,当我将该代码放在我的“可见”中时,所有按钮都是无敌的。 所以我的问题是,如何实现我的请求?

提前致谢

【问题讨论】:

    标签: php sql sorting button yii


    【解决方案1】:

    首先,queryAll 返回一个数组。 Documentation。所以你可能应该使用queryScalar,并且你应该从函数返回结果,而不是命令对象。

     return $max->queryScalar();
    

    你也可以在 Yii 中使用statistical query

    其次,您想在按钮分别不在顶部或底部时显示按钮,因此您应该否定=

    'visible' => '$data->KBORDER != KB::model()->getMax()',

    'visible' => '$data->KBORDER != KB::model()->getMin()',

    【讨论】:

    • 感谢您的回答。我试过你的建议,但它仍然不起作用。该代码使所有向上/向下箭头出现
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2017-04-14
    相关资源
    最近更新 更多