CGridView how to access id for each column

I am using a CGridView with CActiveDataProvider. Everything works fine however now I have a need to show a custom button depending upon the id of the row.

I can add the button and get it to work as well however I cannot customise the image according to the rowid.

I can see from examples that when creating url I can access the id column by calling $data->id however when I try to do that for imageURL it does not work.

My code is below:


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

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

		'filter'=>$model,

		'columns'=>array(

			'id',

			'name',

			'desc',

			'created',

			array(

				'class'=>'CButtonColumn',

				'header'=>'Active State',

				'template'=>'{rank}',

				'buttons'=>array(

					'rank'=>array(

						'label'=>'Rank',						

						'imageUrl'=>$this->getRank($data->id),

						'url'=>'Yii::app()->createUrl("users/updateRank", array("id"=>$data->id))',

						'options'=>array(

							'ajax'=>array(

								'type'=>'POST',

								'url'=>"js:$(this).attr('href')",								

							),

						),

					),

				),			

			),			

		),

	));

Image URL calls a function in my controller which returns a url to the image. However I cannot pass the id of the current record user is clicking upon and I always get the default image back.

If I use $data->id I get an error that data does not exist.

If I use $this->id it is referring to the controller and I get the controller id. Anyway I can get the id of the row and pass it over to a function.

Resolved. See this link