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
Estrella [SOLUCIONADO] Problema CGridview - CSqlDataProvider julito000 6 212 06-04-2014 12:36 PM
Último mensaje: bluyell
  problema de alineacion en filtros de cgridview gabrieled209 0 340 12-02-2014 01:13 PM
Último mensaje: gabrieled209
  Como muestro solo algunos usuarios en CGridView Mgarcia 0 484 24-11-2013 12:01 PM
Último mensaje: Mgarcia
  Duda con CgridView - urlExpression Neneson 2 533 19-11-2013 01:30 AM
Último mensaje: Neneson
  Duda con CGridView ayudaaa! Mgarcia 0 395 15-11-2013 03:50 PM
Último mensaje: Mgarcia
  Como formatear y modificar el formato de fecha por defecto de Ingles a Español en Yii tdeveloper63 3 1,409 22-05-2013 05:36 PM
Último mensaje: juankamilo
  [SOLUCIONADO] Boton para refrescar CGridView nidark 2 1,191 22-04-2013 09:24 AM
Último mensaje: nidark
  modificar Cruge para luego usarlo juanalejandro 2 1,188 02-04-2013 07:50 PM
Último mensaje: carlos_belisario
  Duda sobre CGridView y Paginacion vonnuman 0 734 03-03-2013 06:32 PM
Último mensaje: vonnuman
  [Solucionado] Obtener el orden de cgridview para enviar como parámetro a otra vista cesarc 1 1,244 11-02-2013 09:13 AM
Último mensaje: cesarc

Salto de foro:


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

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