0

我试图在 Codeigniter 中使用分页列出。我愿意通过使用 jquery ajax 在列表中使用排序。它非常适合分页的第一页。我可以在该页面中进行升序和降序排序。但是当我点击其他页面时。这没用。

可能是什么问题呢。任何人都可以建议我吗?

提前致谢。

这是我的控制器的代码

function listData(){

  $this->clear_sample_id_catche();
  $out=$this->Mgeneral->listData();
  $per_page = 10;
    $total = $this->Mgeneral->countData();
    $data = $this->Mgeneral->listData($per_page, $this->uri->segment(3));

   $base_url = site_url('general/listData');

   $config['base_url'] = $base_url;
   $config['total_rows'] = $total;
   $config['per_page'] = $per_page;
   $config['uri_segment'] = '3';

$this->pagination->initialize($config); 
  $data=array('body'=>'list','out'=>$data);

  $this->load->view('template',$data);
}

这是我的模型

function listData($limit = NULL, $offset = NULL)
{
 $this->db->limit($limit, $offset);
 $data=array();
$q=$this->db->get('tbl_sample_id');
if($q->num_rows()>0)
{     $data=$q->result_array();                             
        return $data;
    }
}

我使用 ajax 作为

<script type="text/javascript">

$(document).ready(function(){ $("#internal").click(function(){

$.ajax({url:"general/listData_internal_ascending",success:function(result){
  $("body").html(result);

    }});
  });
});

谢谢

4

3 回答 3

1

在进行数据库调用时,分页使用 Limit 和 Offset 参数。如果您使用分页,则单击页面链接将传回偏移量。如果到目前为止这对您有用,那么您需要做的就是确保将 Sort 参数保留在页面中的某个位置。

如果您的控制器方法正在检查 GET 变量以查找分页的偏移量,您需要确保该方法还知道要按哪个字段进行排序。我个人将其存储在 flashdata 中。

因此,在您的控制器方法中,在 db 调用之前:

$SortColumn = $this->session->flashdata('SORT_BY');

如果那里没有保存排序,则返回 false,因此您可以在添加 $db->order_by() 方法时检查它。如果那里有东西,那么你可以适当地排序。

然后在加载视图之前在方法的底部,将 Sort 设置回 flashdata,以便下次调用该方法时(在下一页请求上),它有 Sort 字段可以再次使用。

$this->session->set_flashdata('SORT', $SortColumn);

抱歉,我没有任何完整的代码示例,因为我使用 PHP-ActiveRecord 而不是 CI 内置的 activerecord 库。

于 2012-04-17T06:57:20.773 回答
0

你的功能应该是这样的

function listData($limit = NULL, $offset = NULL)
{
    $this->db->limit($limit, $offset);
    $this->db->order_by('id');
    $q = $this->db->get('tbl_sample_id');
    if($q->num_rows()>0)
    {     
       return $q->result_array();                             
    }
}
于 2012-04-18T06:07:52.373 回答
0

我可以建议您在分页的 ajax 调用中传递排序参数。这可能是问题所在。

于 2012-04-17T07:00:51.007 回答