quarta-feira, 20 de julho de 2011

ReportViewer: Outra Razão Para “Sys.ArgumentNullException: Value cannot be null. Parameter name: panelsCreated[…]”

ponte-que-partiu-1 
Ponte Que Partiu

CARVALHO. PONTE QUE PARTIU!!! Perdemos uma manhã inteira caçando o erro “Sys.ArgumentNullException: Value cannot be null. Parameter name: panelsCreated[1]” que era gerado em um web form que tinha um controle ReportViewer pra mostrar relatórios na nossa aplicação. A nossa “preguiça” me parece ser um jeito bem fácil de este erro aparecer: copiar um relatório já existente para fazer um novo. Nós criamos uma cópia de um relatório já existente pra reaproveitar o trabalho de layout já feito para o relatório original. Só que a página com o relatório original funcionava ok, mas na página com o novo relatório, o controle ReportViewer mostrava um painel em branco, e o IE mostrava o seguinte erro de JavaScript:

sheila-carvalho
Sheila Carvalho

Sys.ArgumentNullException: Value cannot be null. Parameter name: panelsCreated[1]

O problema foi gerado porque o relatório original tinha 4 parâmetros, e no segunda relatório só usamos 3. O quarto parâmetro não era usado, e não tinha um valor default. E, conforme descobrimos, parâmetros para os quais não são fornecidos um valor provocam o erro acima na renderização do ReportViewer. Bastou retirar a definição do parâmetro no arquivo RDLC e o relatório foi renderizado corretamente.