用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7716|回复: 12
收起左侧

[分页] 在分页的基础上,怎末实现按每列排序重新显示数据啊

[复制链接]
发表于 2009-8-11 01:39:42 | 显示全部楼层 |阅读模式
请问下大家,用CI可以很好的实现分页,但是在分页实现的基础上,怎末实现点击某一列以后,表格会刷新一遍,并按照列属性重新排列显示呢?

比如

序号    姓名   年龄
3       小明     14
4       小花     12
1       小强     15
2       小军     13

当点击“序号”后,表格刷新变成了
序号    姓名   年龄
1       小强     15
2       小军     13
3       小明     14
4       小花     12

当点击“年龄”后,表格刷新变成了
序号    姓名   年龄
4       小花     12
2       小军     13
3       小明     14
1       小强     15

同样,点击 姓名后,以后根据字符排序

请问大家有什么好的方法
发表于 2009-8-11 10:14:30 | 显示全部楼层
可能需要传递不同的参数,我推荐扩展一下分页类,否则会很累。
 楼主| 发表于 2009-8-11 11:02:41 | 显示全部楼层
谢谢啊,请问下,能否提供下例子参考下啊?刚开始学习CI,还不熟悉
发表于 2009-8-11 12:17:42 | 显示全部楼层
目前没有和你功能一样的例子。
发表于 2009-9-11 13:30:13 | 显示全部楼层
LZ问的是JS问题吧其实
发表于 2009-9-24 17:55:00 | 显示全部楼层
我的做法是另外写一个分页方法,通过传参进行处理。
发表于 2009-9-24 18:07:03 | 显示全部楼层
楼上的能否把你的代码贴出来看看,
我想的是这个问题只是涉及到一个order by的问题
发表于 2009-9-25 15:20:46 | 显示全部楼层
再运用session来保存order_by信息就更完美了
发表于 2009-10-18 22:09:36 | 显示全部楼层
本帖最后由 ouok 于 2009-10-18 22:11 编辑

写个数组遍历函数,传入需要排序的数组,排序的字段,排序的方式
/**
* 二维数据排序方法(冒泡方式)
* 本函数仅限于对二维数组中的数字字段进行排序
* by Firn hailingr@163.com
* @param array 需要排序的array $a
* @param string 需要排序的字段 $sort
* @param string 排序方式 $d=0默认为升序, $d=1为降序
* @return array
* @用法$afile = array2sort($afile,'time','d');

PHP复制代码
 
function array2sort($a,$sort='id',$d='asc')
{
        $num=count($a);
        if($d =='asc')
        {
                for($i=0;$i<$num;$i++)
                {
                        for($j=0;$j<$num-1;$j++)
                        {
                                if($a[$j][$sort] > $a[$j+1][$sort])
                                {
                                        foreach ($a[$j] as $key=>$temp)
                                        {
                                                $t=$a[$j+1][$key];
                                                $a[$j+1][$key]=$a[$j][$key];
                                                $a[$j][$key]=$t;
                                        }
                                }
                        }
                }
        }else if($d=='desc'){
                for($i=0;$i<$num;$i++)
                {
                        for($j=0;$j<$num-1;$j++)
                        {
                                if($a[$j][$sort] < $a[$j+1][$sort])
                                {
                                        foreach ($a[$j] as $key=>$temp)
                                        {
                                                $t=$a[$j+1][$key];
                                                $a[$j+1][$key]=$a[$j][$key];
                                                $a[$j][$key]=$t;
                                        }
                                }
                        }
                }
        }
return $a;
}
 
 
复制代码
发表于 2010-3-21 09:47:37 | 显示全部楼层
我的做法是设定路径传参数, 设置两个 一个是分页的传参 另外一个是排序字段的传参数  如图
希望有帮助
未命名.JPG

本版积分规则