Usuário com melhor resposta
Problemas com PageSize GridView Asp.Net c#

Pergunta
-
Boa tarde Msdn!
Tenho um gridview dentro de um datalist, e populo o datalist de acordo com as seções que eu tenho no banco, ele se repete 3x formando 3 grids, e eu quero mudar dinamicamente o PageSize dos grids...
tentei mudar isso no ItemDataBound do DataList, mas sem sucesso...
alguem tem alguma sugestão?
parte do codigo behind:
protected void DataList_Secoes_ItemDataBound(object sender, DataListItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { GridView grv = (GridView)e.Item.FindControl("GridView_Produtos"); DataSet ds_sec_grid = ob_prod.Retorna_Produtos_Sec(id, true); if (ds_sec_grid.Tables[0].Rows.Count == 0) { grv.Visible = false; } grv.DataSource = ds_sec_grid; grv.DataBind(); if (id == 1) { hyp_simulador.NavigateUrl = "Simulador.aspx?tipo=" + id; grv.PageSize = 6; } else if (id == 3) { hyp_simulador.NavigateUrl = "Simulador.aspx?tipo=" + id; grv.AllowPaging = true; grv.PageSize = 6; } else { hyp_simulador.Visible = false; grv.PageSize = 13; } } }
parte do HTML:
<asp:DataList ID="DataList_Secoes" runat="server" RepeatDirection="Horizontal" BorderWidth="0px" RepeatColumns="3" BorderStyle="None" CellPadding="0" OnItemDataBound="DataList_Secoes_ItemDataBound" meta:resourcekey="DataList_SecoesResource1"> < ItemTemplate > < div class = "div_produtos_secao" > < div class = "div_produtos_cab_lbl" > < a name = "Conteudo" > <asp:Label ID="Label_Produtos_Secao_Nome" runat="server" CssClass="lbl_produtos_cab" meta:resourcekey="Label_Produtos_Secao_NomeResource1"></ asp : Label > </ a > </ div > < div class = "div_produtos_conteudo_grid" > <asp:GridView ID="GridView_Produtos" runat="server" AutoGenerateColumns="False" EnableModelValidation="True" ShowHeader="False" Width="304px" meta:resourcekey="GridView_ProdutosResource1" PageSize="1"> < Columns > < asp : BoundField DataField = "prod_nome" meta:resourcekey="BoundFieldResource1" > < ItemStyle CssClass = "grid_prod" /> </ asp : BoundField > < asp : TemplateField ShowHeader = "False" meta:resourcekey="TemplateFieldResource1" > < ItemTemplate > < a href = "Produtos_View.aspx?prod_id=<%# Eval("prod_id") %>" > < img alt = "" src="Images/Produtos/Ico_detalhes.png" style = "border-style: none" /> </ a > </ ItemTemplate > < ItemStyle HorizontalAlign = "Center" Width = "35px" /> </ asp : TemplateField > </ Columns > </ asp : GridView > </ div > < div class = "div_produtos_conteudo_simulador" > <asp:HyperLink ID="HyperLink_Produtos_Simulador" runat="server" meta:resourcekey="HyperLink_Produtos_SimuladorResource1"></ asp : HyperLink > </ div > < div class = "div_produtos_conteudo_foto" > <asp:Image ID="Image_Produtos_Secao" runat="server" meta:resourcekey="Image_Produtos_SecaoResource1" /> </ div > </ div > </ ItemTemplate > </ asp : DataList >
[]'s
Respostas
-
Oi,
O único problema deste código do itemdatabound (segundo a 1a mensagem) é que a mudança do pagesize encontra-se depois de ter sido chamado o gridview.databind(). Inverta, chame o databind depois da mudança do pagesize.[]'s
Dennes
http://twitter.com/Dennes* Treinamento C# e Framework .NET c/OO dia 07/11 - Apenas 12 R$ 42,53 Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp
* Treinamento de ASP.NET 3.5 no RJ dia 16/11 - Apenas 12x R$ 60,48 - Inscreva-se em http://www.bufaloinfo.com.br/descontoaspnetantecipado.asp
Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
http://www.bufaloinfo.com.br
Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp- Sugerido como Resposta Harley Araujo sexta-feira, 6 de novembro de 2009 12:22
- Marcado como Resposta Harley Araujo terça-feira, 10 de novembro de 2009 17:25
Todas as Respostas
-
-
-
Faz assim,
No seu databound do datalist
GridView grv = (GridView)e.Item.FindControl("GridView_Produtos" );
Ae no seu evento databound da gridview
DataSet ds_sec_grid = ob_prod.Retorna_Produtos_Sec(id, true );
grv.DataSource = ds_sec_grid;
grv.DataBind();
if (id == 1)
{
hyp_simulador.NavigateUrl = "Simulador.aspx?tipo=" + id;
grv.PageSize = 6;
}
else if (id == 3)
{
hyp_simulador.NavigateUrl = "Simulador.aspx?tipo=" + id;
grv.AllowPaging = true ;
grv.PageSize = 6;
}
else
{
hyp_simulador.Visible = false ;
grv.PageSize = 13;
}
-
-
-
Eu nao consigo encontrar o Grid.. tentei deste jeito:
protected void GridView_Produtos_DataBound(object sender, EventArgs e)
{
GridView grv = (GridView)Page.FindControl("GridView_Produtos");
if (id == 1)
{
grv.PageSize = 6;
}
else if (id == 3)
{
grv.PageSize = 3;
}
else
{
//grv.PageSize = 3;
}
}
ele da este erro:
Referência de objeto não definida para uma instância de um objeto.
-
Faz assim é melhor fazer o databound
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridView myGrid = (GridView)sender;
}
}
protected void GridView1_DataBound(object sender, EventArgs e)
{
GridView myGrid = (GridView)sender;
} -
-
-
Oi,
O único problema deste código do itemdatabound (segundo a 1a mensagem) é que a mudança do pagesize encontra-se depois de ter sido chamado o gridview.databind(). Inverta, chame o databind depois da mudança do pagesize.[]'s
Dennes
http://twitter.com/Dennes* Treinamento C# e Framework .NET c/OO dia 07/11 - Apenas 12 R$ 42,53 Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp
* Treinamento de ASP.NET 3.5 no RJ dia 16/11 - Apenas 12x R$ 60,48 - Inscreva-se em http://www.bufaloinfo.com.br/descontoaspnetantecipado.asp
Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
http://www.bufaloinfo.com.br
Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp- Sugerido como Resposta Harley Araujo sexta-feira, 6 de novembro de 2009 12:22
- Marcado como Resposta Harley Araujo terça-feira, 10 de novembro de 2009 17:25