2012-04-17 48 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調用分頁中傳遞排序參數。這可能是問題所在。