Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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);
}
}>
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.
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
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.kauebranco.xpg.com.br/GridFooterCerto.JPG&key=462fbc8ed7150fb70df52aadc5f28ee40774fc7c34a8af47a9a925ceafa15326" alt="Imagem Postada" />
segue a imagem de como a minha Grid fica depois que acontece um PostBack na página:
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.kauebranco.xpg.com.br/GridFooterDepoisDoPostBack.JPG&key=6f40eda353f494808029563476d3e4610f67650c5ad9173c3704fd8341079366" alt="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;
}kauebranco pra facilitar sua vida:
No cs cria um metodo
protected string CountGrid()
{
return string.Format("Qtd: {0}", grvMotivoAusencia.Rows.Count);
}<%# CountGrid() %>
>
kauebranco pra facilitar sua vida:
No cs cria um metodo
protected string CountGrid()
{
return string.Format("Qtd: {0}", grvMotivoAusencia.Rows.Count);
}<%# 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;
pode centralizar assim
<center><%# CountGrid() %></center>
>
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.
Hum certo kauebranco, realmente vai gerar errado. eu pq geralmente so uso uma unica template pra tudo.
Tenta criar ele no DataBound sem ser no RowDataBound