I guess you can either add a behavior or extend the class and use ButtonColumn in your cgridview instead of CButtonColumn.
I’m not sure for the behavior way as cgridview takes a classname as argument and not a object
class ButtonColumn extends CButtonColumn
{
/**
* @var array the configuration for additional buttons. Each array element specifies a single button
* which has the following format:
* <pre>
* 'buttonID' => array(
* 'label'=>'...', // text label of the button
* 'url'=>'...', // the PHP expression for generating the URL of the button
* 'imageUrl'=>'...', // image URL of the button. If not set or false, a text link is used
* 'options'=>array(...), // HTML options for the button tag
* 'click'=>'...', // a JS function to be invoked when the button is clicked
* )
* </pre>
* Note that in order to display these additional buttons, the {@link template} property needs to
* be configured so that the corresponding button IDs appear as tokens in the template.
*/
public $buttons= array(
'newbtn'=>array(
'label'=>'.....',
'url'=>'......',
'imageUrl'=>'......',
'options'=>'.....',
)
);
}