none
Problemas com PageSize GridView Asp.Net c# RRS feed

  • 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
    >
    
    
    Muito Obrigado!
    []'s
    quarta-feira, 4 de novembro de 2009 17:25

Respostas

Todas as Respostas

  • Olá,

    Pq vc não carrega normalmente o DataList e faz o tratamento no rowDataBound da grid?
    quarta-feira, 4 de novembro de 2009 17:40
    Moderador
  • Nao entendi sua resposta.. teria algum exemplo?
    []'s
    quarta-feira, 4 de novembro de 2009 17:56
  • Faz assim,

    No seu databound do datalist

                GridView grv = (GridView)e.Item.FindControl("GridView_Produtos"
    );
    DataSet ds_sec_grid = ob_prod.Retorna_Produtos_Sec(id, true );
    grv.DataSource = ds_sec_grid;
    grv.DataBind();

    Ae no seu evento databound da gridview

      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;
    }

    quarta-feira, 4 de novembro de 2009 18:14
    Moderador
  • o evento do grid é DataBound apenas ou RowDataBound?
    quarta-feira, 4 de novembro de 2009 18:28
  • Faz no dataBound
    quarta-feira, 4 de novembro de 2009 18:30
    Moderador
  • 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.

    quarta-feira, 4 de novembro de 2009 18:37
  • 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;
        }
    quarta-feira, 4 de novembro de 2009 18:50
    Moderador
  • nao funcionou... alguma outra alternativa? trocar componente?
    quarta-feira, 4 de novembro de 2009 19:19
  • O que não funcionou, cola seu codigo aqui.
    quarta-feira, 4 de novembro de 2009 19:23
    Moderador
  • 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
    quinta-feira, 5 de novembro de 2009 05:46