/// <summary> /// Cria colunas com TemplateField contendo checkboxes dinamicamente adicionando /// tantas colunas quanto requisitos houver, bem como montando /// a primeira coluna com todos os requisitos funcionais /// </summary> /// <param name="projetoCorrente">projeto contendo todos os requisitos</param> protected void MontarGridViewComColunasDinamicas(Projeto projetoCorrente) { service = new ServicoRastreabilidade(); ICollection requisitos = service.RepositorioRequisito.GetAllByProjetoOrderByTypeAndCodigo(projetoCorrente); foreach (Requisito requisito in requisitos) { TemplateField customField = new TemplateField(); customField.ItemTemplate = new CheckBoxMatrizTemplateCasoDeUso(DataControlRowType.DataRow, requisito.Id.ToString()); customField.HeaderTemplate = new CheckBoxMatrizTemplateCasoDeUso(DataControlRowType.Header, requisito.CodigoRequisito); grvMatrizCasoDeUso.Columns.Add(customField); } grvMatrizCasoDeUso.DataSource = service.RepositorioCasoDeUso.GetAllByProjetoOrderByCodigoCasoUso(projetoCorrente); grvMatrizCasoDeUso.DataBind(); }
/// <summary> /// Cria colunas com TemplateField contendo checkboxes dinamicamente adicionando /// tantas colunas quanto requisitos não-funcionais houver, bem como montando /// a primeira coluna com todos os requisitos funcionais /// </summary> /// <param name="projetoCorrente">projeto contendo todos os requisitos</param> protected void MontarGridViewComColunasDinamicas(Projeto projetoCorrente) { service = new ServicoRastreabilidade(); ICollection requisitosFuncionais = service.RepositorioRequisito.GetAllFuctionalsByProjeto(projetoCorrente); ICollection requisitosNaoFuncionais = service.RepositorioRequisito.GetAllNonFuctionalsByProjeto(projetoCorrente); foreach (Requisito requisitoNaoFuncional in requisitosNaoFuncionais) { TemplateField customField = new TemplateField(); customField.ItemTemplate = new CheckBoxMatrizTemplate(DataControlRowType.DataRow, requisitoNaoFuncional.Id.ToString()); customField.HeaderTemplate = new CheckBoxMatrizTemplate(DataControlRowType.Header, requisitoNaoFuncional.CodigoRequisito); grvMatrizRequisito.Columns.Add(customField); } grvMatrizRequisito.DataSource = requisitosFuncionais; grvMatrizRequisito.DataBind(); }
/// <summary> /// Evento que persiste a marcação ou desmarcação do checkbox que rastreia /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void CheckBoxGrvMatrizCasoDeUso_CheckedChanged(object sender, EventArgs e) { CheckBox control = (CheckBox)sender; BuscarLabel(control); try { string[] ids = control.ID.Split('-'); service = new ServicoRastreabilidade(); Requisito requisito = (Requisito)service.RepositorioRequisito.Get(typeof(Requisito), int.Parse(ids[0])); CasoDeUso casoDeUso = (CasoDeUso)service.RepositorioCasoDeUso.Get(typeof(CasoDeUso), int.Parse(ids[1])); if (control.Checked) { service.AdicionarRastreamento(casoDeUso, requisito); } else { service.RemoverRastreamento(casoDeUso, requisito); } } catch (NegocioException ne) { erro = ne.Message; log.Error(erro, ne); ExibirMensagem(erro, lblMensagem, "60", ConfigurationManager.AppSettings["TOPO_MENSAGEM"], ConfigurationManager.AppSettings["COR_FUNDO_MENSAGEM"], ConfigurationManager.AppSettings["COR_TEXTO_MENSAGEM"]); } catch (Exception ex) { erro = "Erro desconhecido. "; log.Error(erro, ex); ExibirMensagem(erro, lblMensagem, "60", ConfigurationManager.AppSettings["TOPO_MENSAGEM"], ConfigurationManager.AppSettings["COR_FUNDO_MENSAGEM"], ConfigurationManager.AppSettings["COR_TEXTO_MENSAGEM"]); } }