fedemotta / yii2-widget-datatables

DataTables widget for Yii2
MIT License
35 stars 28 forks source link

can i use server side processing for this widgets #8

Open odat opened 8 years ago

odat commented 8 years ago

hello, can i use the server side processing feature of datatables in this widgets and please if i can get me the example of it, Great work Thanks,

alladas commented 8 years ago

Hello @odat Did you get it work with server side processing?

Hi @fedemotta Nice widget. Specially handy for supporting Yii Grid. But it seems loading at once all data from the dataprovider. How to set it to use the serverSide property? Disabling 'dataprovider' and setting 'clientOptions' => ['serverSide' => true,'ajax' => Url::to(['document/datatables'])] leads to a required 'dataprovider' error. In advance thanks for any hints or tips.

mtangoo commented 6 years ago

@fedemotta can you add that option or at least provide a lead for someone to fix it? Loading all data when you have bunch of them isn't funny!

odat commented 6 years ago

@alladas yes thank you

haykhov commented 6 years ago

Hi

I am trying to use server side process for datatable, but it is not drawing in table. I get all necessary info in AJAX response, but can not draw. Any ideas ??

alladas commented 6 years ago

HI @haykhov To get the the server side processing, I finally used this repo. I do not remember all details but my patch has been merged there. You may give it a try

haykhov commented 6 years ago

Thanks @alladas

atmanegara commented 4 years ago

create AjaxController.php public function actionProsessSpm() { $requestData = Yii::$app->request->get(); $start = Yii::$app->request->get('start')==null ? 1 : Yii::$app->request->get('start'); $length = Yii::$app->request->get('length')==null ? 10 : Yii::$app->request->get('length'); $draw = Yii::$app->request->get('draw');//==null ? 10 : Yii::$app->request->get('length'); $columns = array( 0 => '', 1=> 'noreg', 2 => 'nama_skpd', 3 => 'format_spm', 4=> 'tgl_spm', 5 => 'tgl_terima_spm', 6 => '', );

   $sql = "SELECT  a.*,b.nama_skpd from data_spm a"
           . " inner join ref_skpd b on a.id_ref_skpd=b.id"
           . " where 1=1 and a.tahun=$this->tahun_ta";

    $data = Yii::$app->db->createCommand($sql)->queryAll();

    $totalData = count($data);
    $totalFiltered = $totalData;

    if (!empty($requestData['search']['value']))
    {
        $sql.=" AND ( a.noreg LIKE '%" . $requestData['search']['value'] . "%' ";
        $sql.=" OR a.format_spm LIKE '%" . $requestData['search']['value'] . "%'";
        $sql.=" OR b.nama_skpd LIKE '%" . $requestData['search']['value'] . "%')";

    }
    $data = Yii::$app->db->createCommand($sql)->queryAll();
    $totalFiltered = count($data);

    $sql.=" ORDER BY a.tgl_terima_spm  ASC  LIMIT " . $start . " ," . 
     $length. "   ";

    $result = Yii::$app->db->createCommand($sql)->queryAll();

    $data = array();
    $i=1;

    foreach ($result as $key => $row)
    {

        $nestedData = array();
        $urlView = Url::to(['petugas/data-spm/view', 'id' => $row['id'],'no_spm'=>$row['no_spm'],'noreg'=>$row['noreg'],'id_jenis_spm'=>$row['id_ref_jenis_spm']]);
        $urlUpdate = Url::to(['petugas/data-spm/update', 'id' => $row['id'],'no_spm'=>$row['no_spm'],'noreg'=>$row['noreg'],'id_jenis_spm'=>$row['id_ref_jenis_spm']]);
        $urlDelete = Url::to(['petugas/data-spm/delete', 'id' => $row['id'],'no_spm'=>$row['no_spm'],'noreg'=>$row['noreg'],'id_jenis_spm'=>$row['id_ref_jenis_spm']]);
     $nestedData[] = $i;
        $nestedData[] = $row["noreg"];
        $nestedData[] = $row["nama_skpd"];
        $nestedData[] = $row["format_spm"];
        $nestedData[] = $row["tgl_spm"];
        $nestedData[] = $row["tgl_terima_spm"];
        $nestedData[] = "<a href='$urlView' title='View' aria-label='View' data-pjax='0' > <span class='glyphicon glyphicon-eye-open'></span>"
                . "<a href='$urlUpdate' title='Update' aria-label='View' data-pjax='0'><span class='glyphicon glyphicon-pencil'></span>"
                . "<a href='$urlDelete' title='Delete' aria-label='Delete' data-pjax='0' data-confirm='Are you sure you want to delete this item?' data-method='post'><span class='glyphicon glyphicon-trash'>";
         $data[] = $nestedData;
         $i++;
    }

    $json_data = array(
        "draw" => $draw, 
        "recordsTotal" => intval($totalData),
        "recordsFiltered" => intval($totalFiltered),
        "data" => $data   // total data array
    );

    return \yii\helpers\Json::encode($json_data);

}

in setting datatables widget $url = yii\helpers\Url::to(['/ajax/prosess-spm']); $spm = DataTables::widget([ 'dataProvider' => $dataProvider, 'clientOptions' => [ "processing" => true, "serverSide" => true, "ajax" => "$url", //server side

...

paskuale75 commented 4 years ago

@atmanegara what is $spm ?! In widget don't exist thi param...

atmanegara commented 4 years ago

@atmanegara what is $spm ?! In widget don't exist thi param...

$spm is not params, its variable, just ignore it