[英]Sorting does not work on 2nd page of pagination
我试图在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);
}});
});
});
谢谢
在进行数据库调用时,分页使用Limit和Offset参数。 如果您使用分页,则单击页面链接将传回偏移。 如果到目前为止这对您仍然有效,那么您要做的就是确保将Sort参数保留在页面中的某个位置。
如果您的控制器方法正在检查GET变量以查找分页的偏移量,则需要确保该方法也知道要按哪个字段排序。 我个人将其存储在flashdata中。
因此,在您的控制器环境中,在db调用之前:
$SortColumn = $this->session->flashdata('SORT_BY');
如果没有在其中保存排序,则它返回false,因此您可以在添加$ db-> order_by()方法时进行检查。 如果那里有东西,那么您可以适当地排序。
然后,在加载视图之前,在方法的底部,将“排序”设置回flashdata,以便下次调用该方法时(在下一页请求时),它具有“排序”字段可再次使用。
$this->session->set_flashdata('SORT', $SortColumn);
抱歉,我没有完整的代码示例,因为我使用PHP-ActiveRecord而不是CI内置的activerecord库。
我建议您在ajax分页调用中传递排序参数。 那可能是问题所在。
您的功能应如下所示
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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.