hongye0801 发表于 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

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

请问大家有什么好的方法

Hex 发表于 2009-8-11 10:14:30

可能需要传递不同的参数,我推荐扩展一下分页类,否则会很累。

hongye0801 发表于 2009-8-11 11:02:41

谢谢啊,请问下,能否提供下例子参考下啊?刚开始学习CI,还不熟悉

Hex 发表于 2009-8-11 12:17:42

目前没有和你功能一样的例子。

kazaff 发表于 2009-9-11 13:30:13

LZ问的是JS问题吧其实

longjianghu 发表于 2009-9-24 17:55:00

我的做法是另外写一个分页方法,通过传参进行处理。

xiaoniao 发表于 2009-9-24 18:07:03

楼上的能否把你的代码贴出来看看,
我想的是这个问题只是涉及到一个order by的问题

azone 发表于 2009-9-25 15:20:46

再运用session来保存order_by信息就更完美了

ouok 发表于 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');


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;
}

wubaojun 发表于 2010-3-21 09:47:37

我的做法是设定路径传参数, 设置两个 一个是分页的传参 另外一个是排序字段的传参数如图
希望有帮助
页: [1] 2
查看完整版本: 在分页的基础上,怎末实现按每列排序重新显示数据啊