CArrayDataProvider como Provider de un Grid

Hola buen día. Estoy haciendo una app, donde quiero pasar como provider de un gridView un CArrayDataProvider. El arreglo tiene la siguiente información:

"1" => "valor1"

"2" => "valor2"

Estoy viendo algunos ejemplos, y veo que hay que indicarle al CGridView la propiedad "column" y veo que le pasan nombres. En mi caso, tengo más bien posiciones en vez de nombres, cómo le puedo hacer para definir esa propiedad en el gridView usando un arreglo como el mostrado en la parte de arriba?

Saludos y Gracias de antemano

Hola espero estes bien, de casualidad conseguiste la respuesta a tu pregunta? estoy parado con algo parecido

Debes colocar en el indice del array el nombre de la columna

array(

columna_1 => valor

)

o en la columna del grid colocas la propiedad header=> name

Hola, gracias por la ayuda ahora me sale bien el CGridview pero al momento de buscar no me funciona debe ser por que la funcion filter no esta bien? te coloco mi codigo por favor necesito ayuda no puedo utilizar modelos solo arrays:

CFormModel





class MarcaForm extends CFormModel

{

    public $filters = array();

 

    /**

     * Override magic getter for filters

     */

    public function __get($name)

    {

        if(!array_key_exists($name, $this->filters))

            $this->filters[$name] = null;

        return $this->filters[$name];

    }

 

    public function filter(array $data)

    {

        foreach($data AS $rowIndex => $row) {

            foreach($this->filters AS $key => $value) {

                // unset if filter is set, but doesn't match

                if(array_key_exists($key, $row) AND !empty($value)) {

                    if(stripos($row[$key], $value) === false)

                        unset($data[$rowIndex]);

                }

            }

        }

        return $data;

    }

}




Controller




$marcas=$client->getMarcas();

		$filtersForm=new MarcaForm;

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

    		$filtersForm->filters=$_GET['FiltersForm'];

 

		$dataProvider=new CArrayDataProvider($marcas);

 

		// Render

		$this->render('index', array('model'=>$marcas,

    	'filtersForm' =>$filtersForm,

    	'dataProvider' => $dataProvider,

		));



y la vista index:




<?php

$columns = array(

    array(

        'header'=>CHtml::encode('Descripcion'),

        'name'=>'descripcion',

        'value'=>'CHtml::link($data->descripcion,array("marca/view",

                                         "id"=>$data->id))',

    ),

    array(

        'header'=>CHtml::encode('Fecha de creacion'),

        'name'=>'created_at',

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

    ),

);

 

?>


<?php 

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

'id'=>'area-grid',

'filter'=>$model,

'dataProvider'=>$dataProvider,

    'columns'=>$columns,

    'filter'=>$filtersForm,

));

?>







En la parte del value de la descripcion quiero que salga un link para que se vea la marca en el view del controller pero me sale el codigho html esa seria una pregunta secundaria, lo mas importante es que no me funciona el buscar del gridview por que puede ser? me estoy guiando de este ejemplo: http://www.yiiframework.com/wiki/232/using-filters-with-cgridview-and-carraydataprovider/

Por favor si alguien me puede ayudar Gracias de antemano.

ya solucione el link para que se vea como html es asi:




<?php

$columns = array(

    array(

        'header'=>CHtml::encode('Descripcion'),

        'name'=>'descripcion',

        'value'=>'CHtml::link($data->descripcion,array("marca/view",

                                         "id"=>$data->id))',

        'type'=>'html',

    ),

    array(

        'header'=>CHtml::encode('Fecha de creacion'),

        'name'=>'created_at',

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

    ),

);

 

?>


tenia que colocarle el atributo type... todavia no consigo como funcione la busqueda <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' />