Loading



 
Calificación:
  • 1 votos - 4 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Modificar CGridView
31-07-2012, 11:31 PM
Mensaje: #1
Modificar CGridView

Hola estoy aprendiendo en Yii todavia quisiera una ayudita con el admin


tengo unas relaciones pero no se como debo mandar a llamar el nombre de otra de un dato en otra tabla
quiero poner el nombre de tipo_presupuestos_id ya esta relacionado pero no se como funciona en el CGridView

Código PHP:
$this->widget('zii.widgets.grid.CGridView', array(
    
'id'=>'cheques-grid',
    
'dataProvider'=>$model->search(),
    
'filter'=>$model,
    
'columns'=>array(
        
'id',
        
'tipo_presupuestos_id',
        
'catalogo_id',
        
'factura',
        
'proveedor_id',
        
'concepto',
        
/*
        'monto',
        'retencion',
        'ckfactura',
        'ckrestencion',
        'planilla_id',
        'acta',
        */
        
array(
            
'class'=>'CButtonColumn',
        ),
    ),
)); 

QUOTE
31-07-2012, 11:57 PM
Mensaje: #2
RE: Modificar CGridView

hola, podrias sustituir:


'tipo_presupuestos_id',


por:


array('name'=>'tipo_presupuestos_id','value'=>'$data->obtenerDatosdelpresupuesto'),


o por:


array('name'=>'presupuesto0.datosdelpresupuesto'),


Para la primera solucion,
array('name'=>'tipo_presupuestos_id','value'=>'$data->obtenerDatosdelpresupuesto'),
debes crear un metodo en tu modelo llamado getObtenerDatosDelPresupuesto(),
y en el devolver lo que quieras mostrar para el presupuesto indicado.


Para la segunda solucion, esta hecha basada en la relacion que tu puedas tener en el modelo,


disculpa lo corto de la respuesta,




QUOTE
01-08-2012, 01:31 AM
Mensaje: #3
RE: Modificar CGridView

Gracias,


Al usar la segunda opcion lo puse asi

Código PHP:
    array('name'=>'tipoPresupuestos.nombre'), 


Y si me pone el nombre y no el id solo que ya no sale el el textfield de busqueda y en el encabezaso solo sale nombre no "Tipos de Presupuesto"


y la primera opcion no me quedo muy claro,


mira yo tengo dos tablas una llamada
tipos presupuesto
y otra llamada
Cheques


y el modelo de cheques en relaciones tengo


Código PHP:
'tipoPresupuestos' => array(self::BELONGS_TO'TipoPresupuestos''tipo_presupuestos_id'), 


entonces segun lo que me dices debo crear un methodo en este modelos


por decir llamado:
pero que debo poner dentro de este methodo?

Código PHP:
public function getObtenerTiposPresupuesto()
{



y en el admin:

Código PHP:
array('name'=>'tipo_presupuestos_id','value'=>'$data->obtenertipospresupuesto'), 
y que si solo con esto se vera el text para busqueda y como poner en el encabezado personalizado el nombre.


gracias por la ayuda.

QUOTE
05-08-2012, 02:34 PM (Este mensaje fue modificado por última vez en: 05-08-2012 06:59 PM por Selectmatica.)
Mensaje: #4
RE: Modificar CGridView

Hola, yo no tengo tampoco mucha experiencia pero para poner nombre en la cabecera tienes que añadir al array el parámetro 'header'=>'mi nombre'.


Lo extoy haciendo de memoria.


Para la función podría ser algo así:


Código PHP:
public static function getobtenertipospresupuesto()
{
    return 
CHtml::listData(Presupuestos::model()->findAll(),'id','nombre');


Tal vez sería mejor añadir un condicional a la función de búsqueda:


Código PHP:
$nombre Presupuestos::model()->find('tiposdepresupuestos_id = ?', array($this->tiposdepresupuestos_id,$this->nombre)); 


Los paramétros últimos son los que aparecen en el resultado del sql.
Por ahí pueden ir las cosas, creo.

QUOTE
06-08-2012, 12:36 PM (Este mensaje fue modificado por última vez en: 07-08-2012 10:20 AM por crashon182.)
Mensaje: #5
RE: Modificar CGridView

yo tuve que hacer algo parecido en alguna oportunidad y lo solucione de la siguiente forma:
en el archivo admin.php (de la vista donde deseas modificar el CGridView coloque algo como lo que sigue:


Código PHP:
<?php $this->widget('zii.widgets.grid.CGridView', array(
    
'id'=>'capacitacion-grid',
    
'dataProvider'=>$model->search(),
    
'filter'=>$model,
    
'columns'=>array(
        
'id',
        
'nombrec',
        
'Modalidad',
        
'fechai',
        
'colaborador',
                array(
                     
'name' => 'capacitador_id',
                     
'header'=>'Capacitador',
                     
'sortable'=>false// since it would still be sorting based on                  
                     
'value'=>'$data->capacitador->nombre'// link version
                     
),
               array(
                     
'name' => 'poblacion_id',
                     
'header'=>'Poblacion',
                     
'sortable'=>false// since it would still be sorting based on                  
                     
'value'=>'$data->poblacion->descripcion'// link version
                 
),
            
            array(
                     
'name' => 'area_id',
                     
'header'=>'Area',
                     
'sortable'=>false// since it would still be sorting based on                  
                    
'value'=>'$data->area->descripcion'// link version
                 
),
        
        
//'poblacion.descripcion',
        //'area.descripcion',
        
        
array(
            
'class'=>'CButtonColumn',
        ),
    ),
)); 


presta atencion en la siguiente parte:


Código PHP:
array(
                     
'name' => 'area_id',
                     
'header'=>'Area',
                     
'sortable'=>false// since it would still be sorting based on                  
                    
'value'=>'$data->area->descripcion'// link version
                 
), 
aqui lo que hago es personalizar la seccion donde (en mi caso) salia un area, la cual estaba relacionada con otra tabla. 'name' contiene el nombre del campo, 'header' contine el encabezado de esa columna y el valor se encuentra en 'value'.


Con esto ya podras ver el CGridView modificado y contendra el nombre de las áreas y no el numero que representa el ID.


Pero... (siempre hay un pero jejej Sonrisa ) esto no es suficiente tenemos que hacer algo mas para que busque por el campo personaizado entonces hacemos lo siguiente:


vamos al modelo (en mi caso Capacitacion.php)


Buscamos la función search()


Código PHP:
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('fechai',$this->fechai,true);
        
$criteria->compare('colaborador',$this->colaborador,true);
        
$criteria->compare('nombrec',$this->nombrec,true);
        
$criteria->compare('Modalidad',$this->Modalidad,true);
                
$criteria->with[]='capacitador';
                
$criteria->addSearchCondition('capacitador.nombre',$this->capacitador_id,true);
                
$criteria->with[]='poblacion';
                
$criteria->addSearchCondition('poblacion.descripcion',$this->poblacion_id,true);
                
$criteria->with[]='area';
                
$criteria->addSearchCondition('area.descripcion',$this->area_id,true);
        return new 
CActiveDataProvider($this, array(
            
'criteria'=>$criteria,
        ));
    } 


y prestamos atención en lo siguiente:


Código PHP:
$criteria->with[]='area';
 
$criteria->addSearchCondition('area.descripcion',$this->area_id,true); 


En esta parte estoy agregando al criteria una nueva condicion de busqueda, donde se encuentra la Descripcion de mi area. ya con esto te deberia buscar en tu CGridView.


Espero haberte orientado y cualquier consulta no tienes más que hacerla.


saludos!!

QUOTE


Posibles temas similares...
Tema: Autor Respuestas: Vistas: Último mensaje
  cambiar tipo filtro cgridview fabian.hernandez.murcia 8 300 15-09-2014 11:54 AM
Último mensaje: fabian.hernandez.murcia
Bombilla como hacer reportes de un CGridView a excel o pdf gess2022 1 289 26-08-2014 09:13 AM
Último mensaje: bluyell
  Problema con los datos cargados de CGridView nandomelo 0 271 11-08-2014 09:22 PM
Último mensaje: nandomelo
  No cargan Filter - CGridView nandomelo 0 255 09-08-2014 05:51 PM
Último mensaje: nandomelo
  Ordenar en un CGridView por un campo Relacionado. ivansalomon 1 546 26-06-2014 10:01 PM
Último mensaje: bluyell
  Maestro detalle con vista "view" y un Cgridview JesusGarcia 0 484 03-06-2014 12:52 PM
Último mensaje: JesusGarcia
  Mostrar datos de en zii.widgets.grid.CGridView de una relacino muchos a muchos julioc_m18 0 551 27-05-2014 01:00 PM
Último mensaje: julioc_m18
  campo relacionado cgridview boostrap Claudio 2 743 26-05-2014 12:27 AM
Último mensaje: Claudio
Fotografía linux falla con variable $data de CgridView dabar 3 739 23-05-2014 11:30 AM
Último mensaje: rahif
Estrella [SOLUCIONADO] Problema CGridview - CSqlDataProvider julito000 6 1,405 06-04-2014 12:36 PM
Último mensaje: bluyell

Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Yii Framework en Español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS