CArrayDataProvider itu data provider yang berupa array,
ini digunakan kalo keadaannya ga memungkinkan untuk agan menggunakan CActiveDataProvider karena 1 dan lain hal,
contohnya agan datanya cuma bisa diambil lewat stored procedure…
nah CGridView dianjurkan menggunakan CActiveDataProvider karena lebih mudah melakukan filternya.
sebenernya data input user itu diproses di search() yang kita miliki didalam CActiveRecord kita, kemudian dikembalikanlah CActiveDataProvider baru yang kemudian ditampilkan lagi.
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('serial_number',$this->serial_number,true);
$criteria->compare('chasis_number',$this->chasis_number,true);
$criteria->compare('cust_loc_id',$this->cust_loc_id);
$criteria->compare('prodel_detail_id',$this->prodel_detail_id);
return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
));
}
setelah melakukan beberapa eksperimen akhirnya saya menemukan bahwa CGridView itu akan merequest action yang sama setiapkali dilakukan input pada filter, dapat dicek dengan isset($_GET["ajax"])…
jadi apabila kita menggunakan CArrayDataProvider, kita cukup mencocokkan inputnya dengan array kita,membuat array baru kemudian mengirimkan array baru tersebut dalam bentuk CArrayDataProvider dengan renderPartial halaman yang terdapat CGridview kita.
yah mudah-mudahan ngerti,kalo kurang jelas nanti saya jawab lagi beserta contoh kodenya