Cgridview Vacio Por Defecto

Hola a todos , soy nuevo en yii y tengo un problema que no he podido solucionar,

lo que necesito es poder dejar CGridView vacio al principio y depués cuando realize la busqueda salgan los datos, cabe destacar que tengo el create y el admin en el mismo form.




<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'asiento-grid',

	'dataProvider'=>$model->search(),

	'columns'=>array(

 		array( 'class'=>'CCheckBoxColumn',

                'value'=>'$data->asiento_id',

                'selectableRows'=>10,

                'id'=>'chk',

      	),		

		array(.......



Lei unos post en los que desia que pusiera este codigo





if(empty($dato) ){

$model->asiento_id = 1;

}


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'asiento-grid',

	'dataProvider'=>$model->search(),

	'columns'=>array(

 		array( 'class'=>'CCheckBoxColumn',

                'value'=>'$data->asiento_id',

                'selectableRows'=>10,

                'id'=>'chk',

      	),		

		array(.......



Con eso solo logro mostrar la tabla vacía, pero la búsqueda no me la realiza.

Ojala alguien me pueda ayudar porfavor…

Gracias…

La variable $dato es lo que llega por $_POST, ¿cierto?

Gracias por responder, pero mira esta vez la búsqueda es por GET me parece , te voy a dejar el código de la Vista para que lo veas completo , tengo la acción admin y create en el mismo formulario.

La variable $dato esta mal me parece, esa idea la saque del siguiente foro:

http://www.yiiframework.com/forum/index.php/topic/37355-cgridview-vacio-por-defecto/

Ojalá hubiera otra forma, yo creo que las de ese post que te mostre no son las correctas,

codigo Vista




<?php

/* @var $this AsientoController */

/* @var $model Asiento */


$this->breadcrumbs=array(

	'Asientos'=>array('index'),

	'Administrar Asientos',

);


$this->menu=array(

	array('label'=>'Listar Asientos', 'url'=>array('index')),

	array('label'=>'Crear Asiento', 'url'=>array('create')),

);


Yii::app()->clientScript->registerScript('search', "

$('.search-button').click(function(){

	$('.search-form').toggle();

	return false;

});

$('.search-form form').submit(function(){

	$('#asiento-grid').yiiGridView('update', {

		data: $(this).serialize()

	});

	return false;

});

");

?>


<?php 

$form=$this->beginWidget('CActiveForm', array(

	'action'=>Yii::app()->createUrl($this->route), 

	'method'=>'get',

)); ?>


<fieldset>

	<legend style="font-weight:bold; color:#000000; font-size:1em">Seleccione</legend>


	<div class="row">

		<?php echo $form->label($model,'Cliente (Médico) RUT'); ?>

		<?php echo $form->textField($model,'cliente_rut',array('size'=>25)); ?>

		

		&nbsp &nbsp &nbsp &nbsp &nbsp   o Seleccione 

		<?php echo CHtml::activedropDownList($model,'asiento_cliente_id', CHtml::listData(cliente::model()->findAll(), 'cliente_id', 'cliente_nombre'), array('empty' => 'Seleccione Cliente (Médico)')); 

	    echo CHtml::error($model,'asiento_cliente_id'); ?>

	</div>




	<div class="row buttons" align="right">

		<?php echo CHtml::submitButton('Buscar'); ?>

	</div>


<?php $this->endWidget(); ?>

</fieldset>


<div id="asiento-grid">	

<?php 

$this->widget('zii.widgets.grid.CGridView', array(

			'id'=>'asiento-grid',

			'dataProvider'=>$model->search(),

			'columns'=>array(

		 		array( 'class'=>'CCheckBoxColumn',

		                'value'=>'$data->asiento_id',

		                'selectableRows'=>10,

		                'id'=>'chk',

		      	),		

				array(

					'name'=>'asiento_cliente_id',

					'header'=>'Rut Cliente',

					'value'=>'$data->clienteCliente->cliente_rut',

					'filter'=>Asiento::getListarClienteRut(),

				),		

				array(

					'name'=>'asiento_cliente_id',

					'value'=>'$data->clienteCliente->cliente_nombre',

					'filter'=>Asiento::getListarCliente(),

				),

				'asiento_fecha_oficial',

				'asiento_voucher',

				array(

					'name'=>'asiento_tipo_asiento_id',

					'value'=>'$data->tipodeAsiento->tipo_asiento_nombre',

					'filter'=>Asiento::getListarTipoAsientos(), 

				),

				'asiento_glosa',


				array(

					'name'=>'asiento_monto',

					'header'=>'Debe',

					'type'=>'raw',

					'value'=> $model->asiento_monto,

				),

				array(

					'name'=>'Haber',

					'type'=>'raw',

					'value'=>array($this,'calcularHaberAsiento'),

				),	

				/*	

				'asiento_cliente_id',

				'asiento_cc_cust_id',

				'asiento_usuario_id',

				'asiento_tipo_operacion',


				*/

				array(

					'class'=>'CButtonColumn',	

					'header'=>'Modificar',

				),

			),

		));?>

</div>

		

<?php $this->renderPartial('_form', array('model'=>$model)); ?>




La función del Controlador




	public function actionAdmin()

	{

		$model=new Asiento('search');


 		$this->performAjaxValidation($model);


		if(isset($_GET['Asiento']))

			$model->attributes=$_GET['Asiento'];




		if(isset($_POST['Asiento']))

		{

			$model->attributes=$_POST['Asiento'];        

            $model->asiento_usuario_id = Yii::app()->user->getId();

			

			if($model->save())

				$this->redirect(array('view','id'=>$model->asiento_id));


		}


		$this->render('admin',array(

			'model'=>$model,

		));

	}



y el metodo search() del modelo




	public function search()

	{

		// @todo Please modify the following code to remove attributes that should not be searched.


			$criteria=new CDbCriteria;

			$criteria->with = array('clienteCliente');

			$criteria->compare('clienteCliente.cliente_rut', $this->cliente_rut, true );

			$criteria->compare('asiento_id',$this->asiento_id);

			$criteria->compare('asiento_fecha_creacion',$this->asiento_fecha_creacion,true);

			$criteria->compare('asiento_fecha_oficial',$this->asiento_fecha_oficial,true);

			$criteria->compare('asiento_tipo_operacion','D');

			$criteria->compare('asiento_monto',$this->asiento_monto);

			$criteria->compare('asiento_voucher',$this->asiento_voucher,true);

			$criteria->compare('asiento_glosa',$this->asiento_glosa,true);

			$criteria->compare('asiento_cliente_id',$this->asiento_cliente_id);

			$criteria->compare('asiento_tipo_asiento_id',$this->asiento_tipo_asiento_id);

			$criteria->compare('asiento_cc_cust_id',$this->asiento_cc_cust_id);

			$criteria->compare('asiento_usuario_id',$this->asiento_usuario_id);


			return new CActiveDataProvider($this, array(

				'criteria'=>$criteria,

			)); 

	}



Colgándome del otro tema, prueba reemplazar




if(empty($dato) ){

   $model->asiento_id = -1;

}



por




if(!isset($_GET['Asiento'])) $model->asiento_id = -1;



Cuéntame si te sirvió.

Compadre te lo agradezco del alma jejejejej , con eso solucione mi problema

Muchas Gracias

Veo q llego tarde.

Pues nada, solucionado.

Un saludo.