0

Codeigniterでページネーションを使用してリストしようとしていました。私はjqueryajaxを使用してリスト内の並べ替えを使用することをいとわなかった。これは、ページ付けの最初のページで完全に機能します。そのページで昇順と降順の並べ替えを行うことができます。しかし、私が他のページをクリックすると。それは動作しません。

何が問題なのか。誰かが私を提案できますか?

前もって感謝します。

これは私のコントローラーのコードです

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

Paginationは、データベース呼び出しを行うときにLimitパラメーターとOffsetパラメーターを使用します。ページネーションを使用している場合は、ページのリンクをクリックするとオフセットが返されます。これがこれまでのところうまく機能している場合、あなたがする必要があるのは、ページのどこかにソートパラメータを保持していることを確認することだけです。

コントローラメソッドがページネーションのオフセットを見つけるためにGET変数をチェックしている場合は、メソッドがソートするフィールドも認識していることを確認する必要があります。私は個人的にそれをflashdataに保存します。

したがって、コントローラーのメットフッドでは、db呼び出しの前に:

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

そこにSortが保存されていない場合は、falseが返されるため、$ db-> order_by()メソッドを追加するときにそれを確認できます。そこに何かがある場合は、適切に並べ替えることができます。

次に、ビューが読み込まれる前にメソッドの一番下で、[並べ替え]をflashdataに戻します。これにより、次にメソッドが呼び出されたときに(次のページのリクエストで)、[並べ替え]フィールドが再び機能するようになります。

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

申し訳ありませんが、CI組み込みのactiverecordライブラリの代わりにPHP-ActiveRecordを使用しているため、完全なコード例はありません。

于 2012-04-17T06:57:20.773 に答える
0

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

于 2012-04-17T07:00:51.007 に答える
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 に答える