2016-01-27 18:21:08 3112次浏览 2条回答 1 悬赏 30 金钱

网站开发接近尾声,几乎所有的编码都是采用utf8编码,但是最后在采用gridview显示人名,并排序的时候出现问题了。不是按照拼音或者笔画啊,乱七八糟的排序。也百度了应当采用gbk的方式才可以正确排序,也知道怎么加这个转换gbk的语句,但是在gridview点击行首排序咋个处理呢?
先谢谢啦。

最佳答案

  • drodata 发布于 2016-01-29 16:02 举报

    在 Search model 内配置 setSort() 内的 attributes property 即可。下面的例子将 post.title 列设置为按拼音排序:

    // in PostSearch
    public function search($params)
    {
        ...
        $dataProvider->setSort([
            'attributes' => [
                ...
                
                'title' => [
                    'asc'  => ['CONVERT(title USING gbk)' => SORT_ASC],
                    'desc' => ['CONVERT(title USING gbk)' => SORT_DESC],
                ],
            ],
        ]);
    }
    
    7 条回复
    回复于 2016-01-30 19:29 回复

    但是现在抬头无法使用了,我再看看该怎么弄。

    回复于 2016-01-30 19:29 回复

    但是现在抬头无法使用了,我再看看该怎么弄。

    回复于 2016-01-30 19:35 回复

    谢谢,忘了把其中的title加进来了。title应当换为各个的排名名称。

    回复于 2016-01-30 19:50 回复

    查了一下 ,还有一个getSort,获取$getsorts后,然后对$sorts->attributes这个array需要修改的地方进行修改。然后把他传给setSort。太感谢啦!

    回复于 2016-01-30 20:14 回复

    查了一下 ,还有一个getSort,获取$getsorts后,然后对$sorts->attributes这个array需要修改的地方进行修改。然后把他传给setSort。太感谢啦!

    回复于 2016-01-30 20:16 回复

    谢谢,忘了把其中的title加进来了。title应当换为各个的排名名称。

    回复于 2016-02-05 13:15 回复

    非常感谢你的回答,我把他整理为一个教程吧。

  • 回答于 2016-01-28 10:13 举报

    SELECT 字段名 FROM 表 ORDER BY CONVERT(字段名 USING gbk) ASC;

    4 条回复
    回复于 2016-01-28 11:22 回复

    简单明了,不错

    回复于 2016-01-28 13:12 回复

    我也搜索到这个答案了,不过我的问题是在gridview里面如何排序。查看代码知道,每次都去调用xxxxSearch->search函数,gridview排序的方法在vendor文件夹下,这个要怎么办呢?谢谢啦

    回复于 2016-01-28 13:36 回复

    不用 yii 的前端类所以不太清楚,但是你点击的时候肯定是传递参数过去才能按照自己想要的排序,试试模型的 orderby 方法

    回复于 2016-01-28 16:20 回复

    嗯嗯,思路是对的,我再去调试一下,看源代码可否加配置。

您需要登录后才可以回答。登录 | 立即注册
bubifengyun
总监

bubifengyun NJSH

注册时间:2014-11-06
最后登录:2022-10-29
在线时长:59小时54分
  • 粉丝36
  • 金钱10
  • 威望160
  • 积分2200

热门问题