hi
i wanna to update CGridView dataProvider as ajax
in view file it’s my code:
<?php echo CHtml::Button('add to invoice',array(
'onClick' =>
CHtml::ajax(
array(
'type' => 'POST',
'url' => CController::createUrl('Invoice/addtoinvoice') ,
'update' => '#gridInvoice' ,
'success' => "function(data, textStatus, XMLHttpRequest){try{\$('#gridInvoice').yiiGridView.update('gridInvoice')}catch(e){}}"
)
),
));
and
if (!isset($dataProvider))
$dataProvider= new CActiveDataProvider("Invoice") ;
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'template' => '{items}' ,
'id' => 'gridInvoice',
'ajaxUpdate' => 'true' ,
'columns' => array(
'id',
'visitorId',
'shopId',
'price',
array(
'class' => 'CButtonColumn',
'template' => '{delete}' ,
),
)
)
);
in controller:
public function actionAddToInvoice() {
if (Yii::app()->request->isAjaxRequest) {
$model = new Invoice ;
if (isset($_POST['Invoice'])) {
$model->visitorId = $_POST['Invoice']['visitorId'];
$model->invoiceId = $_POST['Invoice']['invoiceId'];
$model->shopId = $_POST['Invoice']['shopId'];
$model->productType = $_POST['Invoice']['productType'];
$model->deliveryCount = $_POST['Invoice']['deliveryCount'];
$model->referCount = $_POST['Invoice']['referCount'];
$model->price = $this->getPrice();
if (!$model->validate()) {
}
$model->price = $this->getPrice();
model->save();
}
$dataProvider = new CActiveDataProvider("Invoice",
array(
'criteria' => array(
'condition' => 'invoiceId = :invoiceid' ,
'params' => array(':invoiceid' => $_POST['Invoice']['invoiceId'] ),
)
)
) ;
$this->renderPartial('_create' , array('model' => $model, 'dataProvider'=>$dataProvider)) ;
}
}
but dataProvider not influences the gridView … why ?