Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BiancaLCastro

Utilizando Checkbox na GridView

Recommended Posts

Bom dia pessoal,

 

A minha dúvida é a seguinte ..

Tenho uma gridview que contem uma checkbox e quando eu clico nessa checkbox e depois clico em um botão gerar relatório, ela gera um relatório de todos os dados da row que eu selecionei.

O meu grande problema é conseguir gerar relatório com mais de 1 checkbox selecionada.

 

Por exemplo, no relatório (ReportViewer) teria nome do cliente e endereço, como campos fixos. O que mudaria seria os itens de cada cliente, ou seja, pra cada row que eu selecionei na gridview, ele montaria no relatório, uma tabela individual para cada row, os itens que o cliente comprou.

 

Não sei se fui bem clara, por favor, peço ajuda, porque tá dificil :(

 

Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, irei tentar explicar melhor, caso não dê para entender, eu mando trechos do código ;)

 

OBS: É aplicação Web

 

O que acontece é o seguinte..

 

Eu tenho uma tela de Chamados de assistência técnica .

Esta tela de chamados é composta por uma grid view e nessa gridview cada linha é um chamado com Id diferente, contendo campo Id, nome do cliente ..... e no final dela, possui uma checkbox, que será marcado para que o técnico consiga enviar o orçamento desses chamados em lote.

 

Ou seja, em um lote que veio para conserto, tem 5 equipamentos, o que gerou 5 chamados. Esses 5 chamados foram cadastrados no sistema e ao final da verificação do técnico, ele irá marcar, por exemplo 3 desses 5 chamados e clicará em um botão GERAR ORÇAMENTO, que acarretará na abertura de um relatório, contendo os dados desses equipamentos, com valor do conserto e tudo mais e enviará ao cliente

 

O meu problema é ..

 

Como eu consigo adquirir os IDs referentes de cada chamado na gridview, que está com a checkbox marcada?

Para que no momento que eu clique no botão gerar orçamento, ele consiga pegar o código de cada chamado marcado e assim acrescentar no relatório =/

 

É meio complicado, por isso mesmo eu não estou conseguindo desenvolver, pois sou junior na área ainda =/

 

OBS2: Já pesquisei tudo na net antes de recorrer aqui

 

agradeço qualquer ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, a ideia básica é você separar as duas coisas, primeiro você precisa de uma classe que vai gerar os seus relatórios, o que você provavelmente já tem. Depois você precisa de uma função que vai chamar esta classe passando os ID's dos chamados (deixe que a classe busque os dados deles).

 

Dessa forma acredito que o botão seja basicamente um foreach como neste exemplo:

http://www.codeproject.com/Questions/421326/how-to-get-gridview-row-values-when-checkbox-is-ch

http://stackoverflow.com/questions/19628554/gridview-get-checkbox-checked-value

http://stackoverflow.com/questions/19418648/how-to-get-value-from-selected-checkbox-in-asp-gridview

 

Que pode concatenar, ou montar um array, de ID's que será passado para o gerador de relatório buscar os dados para que possam ser gerados dentro do seu documento. Pense que você precisa apenas de uma String para passar para o banco de dados, de lá que vão vir suas informações.

 

Óbvio que, se você tiver meios, é melhor enviar os dados já mastigados e evitar todo e qualquer tipo de consulta ao banco pois isso pode deixar o sistema lento e dependente de conexão de dados. Neste caso o ideal seria você jogar as colunas pertinentes (como estão descritos nos exemplos acima) dentro do array ou um Dictionary. O melhor jeito seria você enviar o objeto da linha todo à função (uma lista de objetos de linha), mas isto ficaria a sua escolha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, enfim consegui fazer funcionar.

 

Sua dica me ajudou muito.

 

Segue abaixo o código que eu utilizei no botão gerar relatório.

 

protected void BtnGerarRel_Click(object sender, EventArgs e)
    {
        string codigochamado = "";
        foreach (GridViewRow rw in gridassistencia.Rows)
        {
            System.Web.UI.WebControls.CheckBox checkBox = (System.Web.UI.WebControls.CheckBox)rw.FindControl("CBGERRELATORIO");
            HttpContext.Current.Session["checbox"] = checkBox ;
            if (checkBox != null && checkBox .Checked)
            {
                GridViewRow row = (GridViewRow)checkBox.Parent.Parent; // pegar a linha pai desta checkbox
                codigochamado += Convert.ToInt32(gridassistencia.DataKeys[row.RowIndex].Value) + ",";
            }
        }
        if (!codigochamado.Equals(""))
        {
            codigochamado = codigochamado.Substring(0, codigochamado.Length - 1); //retirar ","
        }
        HttpContext.Current.Session["vsIdAssistencia"] = codigochamado;
        Response.Redirect("Orcamento.aspx");
    }

Muito obrigada =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.