Estou com um ideia de desenvolver um sistema que o usuario tem a total liberdade de escolher quais coluna ele quer no grid adicionando ou removendo, entao gostaria de saber se teria como desenvolver via ajax estas requisiçoes e atualizar o grid e ao mesmo tempo salvando em uma tabela esta configuraçoes, alguem poderia dar uma ideia de como fazer isso.
O CGridWidget quando faz a requisição, ele pega a geração da view completa, corta a parte do html do grid via javascript após a requisição ajax e se auto-substitui. Então, se vc adicionar alguma coluna no grid dinamicamente ela vai aparecer, mesmo em requisições ajax.
Ao contrário de como funciona outros grids, como o jqGrid, o CGgridWidget remonta o grid a cada requisição. Isso é bom pq da essa mobilidade a mais, mas tb é ruim pq gera mais tráfego. No seu caso, é perfeito, mas acho que poderia ter uma opção pra desabilitar isso e retornar só os dados num formato diferente, como xml ou json.
quando clicar num botão/link/etc (onde vc quera atualizar) vc inclui o código javascript abaixo:
$.fn.yiiGridView.update("id do seu grid");
Pode ser interceptando um submit, num link, ou qualquer evento que vc necessite. Isso vai fazer que o grid atualize neste momento via ajax, como se vc tivesse clicado numa coluna pra mudar a ordem dos dados(Mas sem mudar nada).
Na sua view, é só vc utilizar a propriedade view da coluna e, no cliente a coluna vai sumir/aparecer via ajax.
O ruim é que tem que mandar atualizar, pq as vezes fica uma requisição desnecessária, mas é uma forma prática.