2012-04-17 68 views
0

我试图在Codeigniter中使用分页列表。我愿意使用jQuery ajax在列表中进行排序。它适用于第一页分页。我可以在该页面中进行升序和降序排序。但是当我点击其他页面时。这是行不通的。排序不能在分页的第2页上工作

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

在此先感谢。

这是我的控制器

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"> 

$(文件)。就绪(函数(){ $(“#internal”)。click(function(){

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

    }}); 
    }); 
}); 

谢谢

+2

哪里是你的代码? – 2012-04-17 06:45:29

+1

页面值和搜索值不一起发送,或者您忘记使用LIMIT和OFFSET。 – 2012-04-17 06:46:42

+0

如果您向我们显示您的代码,那么我们将能够帮助您。 – CJS 2012-04-17 06:52:07

回答

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();        
    } 
} 
1

分页使用限制和偏移参数使数据库调用时。如果您使用分页,则单击页面链接将返回偏移量。如果到目前为止这对你有用,那么你所要做的就是确保你的页面中的Sort参数保持在某个地方。

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

在您的控制器methood

所以,数据库调用之前:

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

如果没有保存有排序,然后返回false,这样你就可以添加你的$时,检查该DB-> ORDER_BY()方法。如果有什么东西,那么你可以适当地排序。

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

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

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

0

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