2012-04-17 11 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; 
    } 
} 

であると私は

<script type="text/javascript"> 

$(ドキュメント).ready(として使用アヤックスを持っていますfunction(){ $( "#internal")をクリックします(function(){

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

    }}); 
    }); 
}); 

データベース呼び出しを行う際

+2

のようになりますか? –

+1

ページの値と検索値が一緒に送信されないか、LIMITとOFFSETの使用を忘れてしまっています。 –

+0

あなたのコードを表示すると、私たちはあなたを助けることができるでしょう。 – CJS

答えて

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

ページネーションがリミットとオフセットのパラメータを使用しています、ありがとうございました。ページネーションを使用している場合は、ページリンクをクリックするとオフセットが戻されます。これまでのところこれがうまくいく場合は、ソートパラメータをページのどこかに置いてください。

コントローラーメソッドがページ変数のオフセットを見つけるためにGET変数をチェックしている場合は、そのメソッドが並べ替えるフィールドも知っていることを確認する必要があります。私は個人的にそれをフラッシュデータに保存します。デシベルの呼び出しの前に、あなたのコントローラmethoodでそう

、:あなたの$を追加するとき、あなたがそれをチェックすることができますので、

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

が保存されて何のソートがない場合には、それは、falseを返しますDB-> ORDER_BY()方法。そこに何かがあれば、適切にソートすることができます。

次に、メソッドがロードされる前にメソッドの一番下で、ソートをflashdataに設定して、次回のメソッド呼び出し時(次のページ要求時)にソートフィールドを再度使用します。申し訳ありません

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

私はPHP-のActiveRecordの代わりに、ビルトインのActiveRecordライブラリCIを使用するように私は、任意の完全なコード例を持っていません。

0

ページ分割のajax呼び出しでソートパラメータを渡すことをお勧めします。それが問題になる可能性があります。

関連する問題