protected void txtQuestionario_OnTextChanged(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtQuestionario.Text))
            {
                LimparCampos();
            }
            else
            {
                var idQuestionario = int.Parse(txtQuestionario.Text);

                if (idQuestionario == 0)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Atencao, "Questionário inválido selecionado.");
                }
                else
                {
                    using (var rel = new RelatorioQuestionario())
                    {
                        if (string.IsNullOrWhiteSpace(txtSolucaoEducacional.Text))
                        {
                            ViewState["_SE"] = Helpers.Util.ObterListaAutocomplete(rel.ListaSolucaoEducacional(idQuestionario));

                            txtSolucaoEducacional.Text = "";
                        }

                        LimparCampos();
                    }
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            // Persistir o preenchimento das soluções quando o relatório for Consolidado.
            if (ObterTipoRelatorioSelecionado() == enumTipoRelatorioResposta.Consolidado)
            {
                ucCategorias1.TreeNodeCheckChanged += PreencherCombos;
            }

            if (IsPostBack)
            {
                return;
            }

            // No primeiro load, define a página atual como 0.
            PaginaAtual = 1;

            using (var rel = new RelatorioQuestionario())
            {
                PreencherCombos(null, null);

                ucCategorias1.PreencherCategorias(false);

                if (RelatorioTutor)
                {
                    divDemandas.Visible             =
                        divTipoQuestionario.Visible =
                            divQuestionario.Visible = false;

                    // Relatório de tutor sempre será de pesquisa.
                    ddlTipoQuestionario.SelectedValue = ((int)enumTipoQuestionario.Pesquisa).ToString();

                    divTutor.Visible = true;

                    WebFormHelper.PreencherLista(rel.ListaProfessor(), cbxProfessor, false, true);

                    txtSolucaoEducacional.Attributes.Add("data-mensagemVazia", "Selecione um tutor");
                }

                ListBoxesUF.PreencherItens(rel.ListaUf(), "ID", "Nome");
                ListBoxesNivelOcupacional.PreencherItens(rel.ListaNivelOcupacional(), "ID", "Nome");

                var lista = rel.ListaSolucaoEducacional();
                ViewState["_SE"] = Helpers.Util.ObterListaAutocomplete(lista);
            }
        }
        protected void rblTipoRelatorio_OnSelectedIndexChanged(object sender, EventArgs e)
        {
            // Esconde todos os campos e os exibe de acordo com o tipo de relatório.
            divDemandas.Visible                                         =
                divTipoQuestionario.Visible                             =
                    divQuestionario.Visible                             =
                        divRelatorioRespondente.Visible                 =
                            divRelatorioEstatistico.Visible             =
                                divRelatorioConsolidado.Visible         =
                                    divStatus.Visible                   =
                                        divUf.Visible                   =
                                            divNivelOcupacional.Visible = false;

            // Limpar o evento e o postback da seleção da categoria, pois só serve para o consolidado.
            ucCategorias1.TreeNodeCheckChanged = null;

            ddlTipoQuestionario.Enabled = true;

            var tipoRelatorioSelecionado = ObterTipoRelatorioSelecionado();

            // Preencher os filtros personalizados de cada tipo de relatório.
            PreencherFiltros(tipoRelatorioSelecionado);

            switch (tipoRelatorioSelecionado)
            {
            case enumTipoRelatorioResposta.Respondente:
                filtroCamposExibidos.Visible = false;

                // Limpar e exibir drop de questionários.
                txtQuestionario.Text = "";
                LimparCampos();

                // Só exibe os campos abaixo se não for relatório de tutor.
                divDemandas.Visible             =
                    divTipoQuestionario.Visible =
                        divQuestionario.Visible = !RelatorioTutor;

                divStatus.Visible           = true;
                divUf.Visible               = true;
                divNivelOcupacional.Visible = true;

                break;

            case enumTipoRelatorioResposta.Estatistico:
                filtroCamposExibidos.Visible = true;

                // O relatório consolidado só funciona para relatórios do tipo de Pesquisa.
                ddlTipoQuestionario.Enabled       = false;
                ddlTipoQuestionario.SelectedValue = ((int)enumTipoQuestionario.Pesquisa).ToString();

                LimparCampos();

                // Limpar e exibir drop de questionários.
                txtQuestionario.Text = "";

                PreencherComboQuestionario();

                // Só exibe os campos abaixo se não for relatório de tutor.
                divDemandas.Visible             =
                    divTipoQuestionario.Visible =
                        divQuestionario.Visible = !RelatorioTutor;

                divStatus.Visible           = true;
                divUf.Visible               = true;
                divNivelOcupacional.Visible = true;

                break;

            case enumTipoRelatorioResposta.Consolidado:
                ucCategorias1.TreeNodeCheckChanged = PreencherCombos;

                filtroCamposExibidos.Visible = true;

                // Exibir diretamente a lista de Soluções Educacionais, sem precisar da listagem de questionários.
                using (var rel = new RelatorioQuestionario())
                {
                    var lista = rel.ListaSolucaoEducacional();

                    ViewState["_SE"] = Helpers.Util.ObterListaAutocomplete(lista);

                    txtSolucaoEducacional.Text = "";

                    LimparCampos();
                }

                break;
            }

            // Forçar a recriação das categorias.
            ucCategorias1.PreencherCategorias(false);
        }