none
Criando repetição HTML em ASP.net RRS feed

  • Pergunta

  • Olá pessoal,

     

    Recentemente optei por fazer um relatório em html no website que estou desenvolvendo,  mas me veio uma dúvida:

    Preciso gerar um relatório para um projeto que tem varias ocorrências internas de uma mesma categoria, ou seja preciso criar uma tela que se repita no mesmo número de vezes que o numero destas ocorrências. Como poderia fazer esta repetição?

    quarta-feira, 9 de novembro de 2011 13:57

Respostas

  •  <asp:Repeater ID="RptSistema" runat="server" OnItemCommand="RptSistema_itemCommand">
                        <ItemTemplate>
                              <table>
                                     //// Suas TR e TD
                              </table>
                        </ItemTemplate>
                    </asp:Repeater>
    

    Tenta colocar dentro do repeater a parte de vulnerabilidades
    • Sugerido como Resposta hamiltonj quarta-feira, 9 de novembro de 2011 15:25
    • Marcado como Resposta Ricardo Nader quinta-feira, 10 de novembro de 2011 13:27
    quarta-feira, 9 de novembro de 2011 14:28
  • Já encontrei a solução, e para deixar registrado para a comunidade, Fiz o repeater como o nosso amigo Lucas mostrou mas não invoquei um método especifico  para o repeater (não chamei o OnItemCommand), e coloquei no page_load dentro de um script na própria pagina.

     

    Aqui vai um pedaço de código de exemplo de como fiz o Repeater:

     

      <asp:Repeater ID="Relatorio" runat="server" >
      <ItemTemplate>
        <table align="center" width:80%; height: 12px;" bordercolor="black" border="2" 
            style="line-height: 10px; width: 854px; height: 14px;">
            
    
            
        <tr bgcolor="blue" style="line-height: 12px">
            <td class="style20" style="line-height: 12px" >
                <font color="white" size="3"><b>ID</b></font>
            </td>
    
            <td class="style19" colspan="2" >
                <font color="white" size="3"><b>VULNERABILIDADE</b></font>
            </td>
        </tr>
        <tr>
                <td class="style15" style="line-height: 12px" >
                <font color="black" size="3"><%#DataBinder.Eval(Container.DataItem, "ID_VULS")%></font>
            </td>
    
            <td class="style16" colspan="2">
                <font color="black" size="3"><%#DataBinder.Eval(Container.DataItem, "NM_VULS")%></font>
            </td>
        </tr>
    	
    

    E a parte do script em C#:

     

        protected void Page_Load(object sender, EventArgs e)
        {
    
            
            string strSqlRelatorio = "SELECT * FROM TBRELATORIO";
            SqlConnection objConn = new SqlConnection(Persistência.DAO.criaConexao("DBVULNERABILIDADES"));
            SqlCommand objComm = new SqlCommand(strSqlRelatorio, objConn);
            SqlDataAdapter objAdpt = new SqlDataAdapter(objComm);
            DataSet objDs = new DataSet();
            objAdpt.Fill(objDs, "Relatorio");
    
            Relatorio.DataSource = objDs;
            Relatorio.DataBind();
            
            //objDs.Tables["Relatorio"].DefaultView
    
    
        }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <style type="text/css">
    

    Vlw Lucas!

    • Marcado como Resposta Ricardo Nader quinta-feira, 10 de novembro de 2011 13:27
    quinta-feira, 10 de novembro de 2011 13:26

Todas as Respostas

  • Acho que mais detalhes seria bem vindos.

    Como voce quer este relatório, o que conteria nele, algo do tipo, uma tabela contendo os dados do funcionario ?

    Seria várias ocorrências de dados que possuem um categoria específica ? (um exemplo simples seria, todos os funcionarios do sexo masculino?)

    quarta-feira, 9 de novembro de 2011 14:05
  • Olá Lucas!

    Trabalho com segurança da informação, então trabalhamos da seguinte forma: um cliente contrata o projeto que terá diversas possíveis vulnerabilidades no sistema analisadas. Vou gerar um relatório para um projeto de um cliente mas com várias vulnerabilidades encontradas assim como também sistemas afetados. Na verdade só preciso mesmo aprender de forma genérica como repetir um determinado trecho de formatação html percorrendo um dataset por exemplo.  Para ser um pouco mais claro, o trecho em HTML está assim:

    <body>
        <h1 align="center"><font size="6" color="black">Relatório</font></h1>
    
        <table align="center" style="width:36%; height: 178px;" bordercolor="black" border="2">
        <tr>
            <td class="style1">
                <center><font size="7" color="blue"><% Response.Write(Session["NM_RAZAO"].ToString()); %></font></center>&nbsp;</td>
        </tr>
        </table>
        <br />
        <br />
        <br />   
    
    
    
    
    
                <br />
                <br />
                <br />
                <br />
                <br />
                <br />
                <br />
                <br />
                <table align="center" style="width:36%; height: 178px;" bordercolor="black" border="2">
        
            <tr>
            <td class="style5">
                <center><font size="7" color="blue"><% Response.Write(Session["NM_PROJ"].ToString()); %></font></center>&nbsp;</td>
        </tr>
    
        </table>
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
    
    
        <h3 align="center"><font size="6">Vulnerabilidades</h3>
        <table align="center" width:80%; height: 12px;" bordercolor="black" border="2" 
            style="line-height: 10px; width: 854px; height: 14px;">
            
    
            
        <tr bgcolor="blue" style="line-height: 12px">
            <td class="style9" style="line-height: 12px" >
                <font color="white" size="1">ID</font>
            </td>
    
            <td class="style10">
                <font color="white" size="1">VULNERABILIDADE</font>
            </td>
        </tr>
        <tr>
                <td class="style9" style="line-height: 12px" >
                <font color="black" size="1"><%Response.Write(Session["ID_VULS"].ToString()); %></font>
            </td>
    
            <td class="style10">
                <font color="black" size="1"><%Response.Write(Session["NM_VULS"].ToString()); %></font>
            </td>
        </tr>
        <tr bgcolor="blue" >
                <td colspan="2"  class="style11" align="center" >
                <font color="white" size="3" ><center style="width: 843px; height: 17px">SISTEMAS AFETADOS</center></font>
            </td>
    
    
        </tr>
        </table>
        
        <form id="form1" runat="server">
        <div>
        
        </div>
        </form>
    </body>
    

    é quando começa essa tabela "VULNERABILIDADES", que vou ter de fazer essas repetições para sistemas e para todos os dados de vulnerabilidades

     

    quarta-feira, 9 de novembro de 2011 14:21
  •  <asp:Repeater ID="RptSistema" runat="server" OnItemCommand="RptSistema_itemCommand">
                        <ItemTemplate>
                              <table>
                                     //// Suas TR e TD
                              </table>
                        </ItemTemplate>
                    </asp:Repeater>
    

    Tenta colocar dentro do repeater a parte de vulnerabilidades
    • Sugerido como Resposta hamiltonj quarta-feira, 9 de novembro de 2011 15:25
    • Marcado como Resposta Ricardo Nader quinta-feira, 10 de novembro de 2011 13:27
    quarta-feira, 9 de novembro de 2011 14:28
  • Lucas, isto é realmente o que preciso, mas existe um problema (eu acho).

    Ao que estou pesquisando, o asp repeater tem restrições em relação ao uso com Session né? Pergunto por que os valores que são exibidos na parte a ser repetida, estão vindo através de Sessions! Existe alguma maneira de trabalhar com Session desta forma?

    quinta-feira, 10 de novembro de 2011 12:23
  • Já encontrei a solução, e para deixar registrado para a comunidade, Fiz o repeater como o nosso amigo Lucas mostrou mas não invoquei um método especifico  para o repeater (não chamei o OnItemCommand), e coloquei no page_load dentro de um script na própria pagina.

     

    Aqui vai um pedaço de código de exemplo de como fiz o Repeater:

     

      <asp:Repeater ID="Relatorio" runat="server" >
      <ItemTemplate>
        <table align="center" width:80%; height: 12px;" bordercolor="black" border="2" 
            style="line-height: 10px; width: 854px; height: 14px;">
            
    
            
        <tr bgcolor="blue" style="line-height: 12px">
            <td class="style20" style="line-height: 12px" >
                <font color="white" size="3"><b>ID</b></font>
            </td>
    
            <td class="style19" colspan="2" >
                <font color="white" size="3"><b>VULNERABILIDADE</b></font>
            </td>
        </tr>
        <tr>
                <td class="style15" style="line-height: 12px" >
                <font color="black" size="3"><%#DataBinder.Eval(Container.DataItem, "ID_VULS")%></font>
            </td>
    
            <td class="style16" colspan="2">
                <font color="black" size="3"><%#DataBinder.Eval(Container.DataItem, "NM_VULS")%></font>
            </td>
        </tr>
    	
    

    E a parte do script em C#:

     

        protected void Page_Load(object sender, EventArgs e)
        {
    
            
            string strSqlRelatorio = "SELECT * FROM TBRELATORIO";
            SqlConnection objConn = new SqlConnection(Persistência.DAO.criaConexao("DBVULNERABILIDADES"));
            SqlCommand objComm = new SqlCommand(strSqlRelatorio, objConn);
            SqlDataAdapter objAdpt = new SqlDataAdapter(objComm);
            DataSet objDs = new DataSet();
            objAdpt.Fill(objDs, "Relatorio");
    
            Relatorio.DataSource = objDs;
            Relatorio.DataBind();
            
            //objDs.Tables["Relatorio"].DefaultView
    
    
        }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <style type="text/css">
    

    Vlw Lucas!

    • Marcado como Resposta Ricardo Nader quinta-feira, 10 de novembro de 2011 13:27
    quinta-feira, 10 de novembro de 2011 13:26