Ir para conteúdo

Arquivado

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

kauebranco

[Resolvido] Footer criado no evento RowDataBound

Recommended Posts

Bom dia,

 

 

Estou criando um footer no evento RowDataBound.(GridView)

Quando a página da algum postback esse footer customizado desaparece.

O ViewState da Grid está como true.

Alguem sabe o que poderia ser ?

 

Obrigado.

 

        protected void grvMotivoAusencia_RowDataBound(object sender, GridViewRowEventArgs e)
        {        
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ((ImageButton)e.Row.FindControl("btnExcluir")).CommandArgument = e.Row.RowIndex.ToString();            
                ((ImageButton)e.Row.FindControl("btnLog")).CommandArgument = e.Row.RowIndex.ToString();            

                e.Row.Attributes.Add("onMouseOver", "this.className='GridHover';");
                if (e.Row.RowState == DataControlRowState.Normal)
                {
                    e.Row.Attributes.Add("onMouseOut", "this.className='GridRow';");
                }
                else if (e.Row.RowState == DataControlRowState.Alternate)
                {
                    e.Row.Attributes.Add("onMouseOut", "this.className='GridAlternate';");
                }
            }
            else if (e.Row.RowType == DataControlRowType.Footer)
            {
                TableCell coluna = new TableCell();
                coluna.ColumnSpan = e.Row.Cells.Count;
                coluna.CssClass = "GridFooter";
                coluna.Text = "Qtd: " + Convert.ToString(grvMotivoAusencia.Rows.Count);

                e.Row.Cells.Clear();
                e.Row.Cells.Add(coluna);
            }
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta criar ele no DataBound sem ser no RowDataBound

 

Muito obrigado.

 

Mais como seria pra criar essa linha no Footer seguindo o código que eu postei ??

O evento DataBound não da suporte por exemplo para:

e.Row.Cells.Add(coluna);

 

 

Tenta criar ele no DataBound sem ser no RowDataBound

 

Muito obrigado.

 

Mais como seria pra criar essa linha no Footer seguindo o código que eu postei ??

O evento DataBound não da suporte por exemplo para:

e.Row.Cells.Add(coluna);

 

 

consegui ... o código é

http://www.aspneti.com/GridView+Valor+total+no+footer+463,0.aspx

mais você saberia me responder pq quando eu crio no RowDataBound ele desaparece ??

 

 

 

Tenta criar ele no DataBound sem ser no RowDataBound

 

Muito obrigado.

 

Mais como seria pra criar essa linha no Footer seguindo o código que eu postei ??

O evento DataBound não da suporte por exemplo para:

e.Row.Cells.Add(coluna);

 

 

consegui ... o código é

http://www.aspneti.com/GridView+Valor+total+no+footer+463,0.aspx

mais você saberia me responder pq quando eu crio no RowDataBound ele desaparece ??

 

 

desculpa pessoal .. na verdade eu naum consegui ..

ele preencheu o Footer tb certinho pelo evento DataBound ..

 

porém ele continua sumindo quando a página da algum PostBack.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem tem uma idéia ?

Será que tenho que trabalhar com o mesmo conceito de controles que são criados dinamicamente ? Que é necessário recriá-los em todos os PostBacks ??

 

segue a imagem de como a minha Grid fica quando entro na página e o Footer é criado certinho

Imagem Postada

 

segue a imagem de como a minha Grid fica depois que acontece um PostBack na página:

Imagem Postada

 

 

se no evento RowDataBound eu criar o Footer assim(segue código abaixo) o Footer não some quando acontece PostBack ...

if (e.Row.RowType == DataControlRowType.Footer)
{
     e.row.Cells[1].Text = "Qtd: " + valor;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

kauebranco pra facilitar sua vida:

 

No cs cria um metodo

protected string CountGrid()
{
  return string.Format("Qtd: {0}", grvMotivoAusencia.Rows.Count);
}

E no grid dentro da templete do footer:

<%# CountGrid() %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

kauebranco pra facilitar sua vida:

 

No cs cria um metodo

protected string CountGrid()
{
  return string.Format("Qtd: {0}", grvMotivoAusencia.Rows.Count);
}

E no grid dentro da templete do footer:

<%# CountGrid() %>

Jivandf, obrigado.

Acredito que sua idéia funcionará, porém eu não conseguirei fazer esse "Qtd: " ficar centralizado na Grid, conforme eu mostrei na imagem.

Se eu fizer desse jeito terá o mesmo efeito que fazer no rowDataBound: e.row.Cells[1].Text = "Qtd: " + valor;

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode centralizar assim

<center><%# CountGrid() %></center>

 

Esse template que você está falando só é acessível dentro de uma coluna.

<asp:TemplateField HeaderText="Log">
   <ItemTemplate>
      <asp:ImageButton ID="btnLog" runat="server" Height="18px" 
       ImageUrl="~/IMG/Log3.gif" Width="15px" CommandName="Log" />
   </ItemTemplate>                                        
   <HeaderStyle Width="6%" />
   <!-- Aqui viria a sua idéia -->
   <!-- <FooterTemplate><center><%# CountGrid() %></center></FooterTemplate> -->
</asp:TemplateField> 

Eu conseguiria somente centralizá-lo para uma coluna.

Não existe um Template somente para o Footer de uma maneira geral que irá causar o efeito que mostrei na imagem.

 

Se eu estiver errado, por favor me mostre como ficaria o código HTML da sua Grid seguindo a sua sugestão.

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.