none
textbox onde usuario digita qual o numero da pagina do gridview RRS feed

  • Pergunta

  • Ola, estou desenvolvendo uma pagina web em c# usando o visual studio 2008,

    tenho um gridview com dados dos cadastros, e esse gridview tem muitas paginas,

    preciso fazer um textbox no gridview a onde o usuario digita o numero da pagina que ele quer ver no gridview?

    Ex: O usuario esta na pagina numero 1 do gridview, ai o usuario digita no textbox 50 e aperta o botao ok ou entao a tecla enter, ai o gridview mostra a pagina de numero 50.

    alguem pode me ajudar como fazer isso?

    Muito Obrigado

    segunda-feira, 25 de março de 2013 13:52

Respostas

  • Por padrão ele começa do zero creio eu, para contornar isso faça assim :

    private void ListaFiltrada(int Numero)
    {
       
    if(Numero < GridView1.PageCount)
           
    GridView1.PageIndex = (Numero - 1); // Coloquei menos um assim você digita 4 , a conta é feita para o grid vai para 3 que é 4 quando começado em 0
    }

    Espero ter ajudado.


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    terça-feira, 9 de abril de 2013 13:07

Todas as Respostas

  • Alguem pode me ajudar por favor?

    muito obrigado

    sexta-feira, 5 de abril de 2013 14:19
  • Bom dia Luiz , fazer isso é aparentemente simples , mas exemplos prontos eu não tenho e outra também você  deve ter uma noção um pouco mais apurada de Asp.Net com Gridview vou lhe dar a idéia  e vê se lhe ajuda ,  e da próxima vez post sua dúvida nos foruns do Asp.Net , C# , .Net Framework Geral ou Desenvolvimento Geral , pois você postou sua dúvida em ASP essa linguagem não tem nada a ver com o que você quer ,  a menos que a paginação seja feita em ASP clássico , mas enfim ao que interessa.

    1º Creio que você já tem os eventos de paginação Grid_OnPaggingChanged ou algo do tipo não me lembro agora, e a ativação do AllowPagging = True e também o PageIndex = algum valor.

    2º Faça um outro metodo de carragamento do gridView e nele passe o o parametro sendo o numero do sua indexão algum como :

    private void ListaFiltrada(int Numero)
    {
    
      grdSeuGrid.PageIndex = Numero;
      grdSeuGrid.DataSource = SuaSource;
      grdSeuGrid.DataBind();
    
    
    }
    
    //No evento do click ok coleque isso 
    
    private void BtnOk_OnClick(object sender,EventArgs e)
    {
    
        ListaFiltrada(int.Parse(txtNumero.Text));
    
    }

    Tente isso e espero ter ajudado.

    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br


    • Editado Davi Murilo sexta-feira, 5 de abril de 2013 14:43
    sexta-feira, 5 de abril de 2013 14:42
  • Davi muito obrigado por ter me ajudado, eu postei a pergunta mais nao vi que tinha postado so em ASP, vou ficar atento sobre isso agora.

    eu consegui fazer da seguinte forma

    private void ListaFiltrada(int Numero)
    {
        if(Numero < GridView1.PageCount)
            GridView1.PageIndex = Numero;
    }
    
    
    protected void BtnIrPara_Click(object sender, EventArgs e)
    {
        ListaFiltrada(int.Parse(TxtIrPara.Text));
    }

    so que o problema agora e que o gridview ta me apresentando a pagina da frente

    Ex: se eu digitar no textbox o numero 4 e clicar no botao Ir, ai o gridview mostra a pagina de numero 5.

    como faço pro gridview apresentar a pagina de numero 4 ?

    Obrigado

    terça-feira, 9 de abril de 2013 12:49
  • Por padrão ele começa do zero creio eu, para contornar isso faça assim :

    private void ListaFiltrada(int Numero)
    {
       
    if(Numero < GridView1.PageCount)
           
    GridView1.PageIndex = (Numero - 1); // Coloquei menos um assim você digita 4 , a conta é feita para o grid vai para 3 que é 4 quando começado em 0
    }

    Espero ter ajudado.


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    terça-feira, 9 de abril de 2013 13:07
  • Ok. Funcionou certinho.

    Muito obrigado Davi

    terça-feira, 9 de abril de 2013 13:38
  • Davi estou com outro problema agora

    se o usuario nao digitar nenhum valor no textbox, e ele apertar o botão BtnIrPara, ele esta estourando e mostra o seguinte erro


    Como resolvo isso?

    Obrigado

    quinta-feira, 11 de abril de 2013 12:34
  • Bom nesse caso você deve fazer uma validação do numero antes de passar como parametro ou então sabendo que vem vazio você poderia mandar um valor padrão exemplo

    protected void BtnIrPara_Click(object sender, EventArgs e)

    {

        // Testando sem valor padrão

    int Numero;

         if(!int.TryParse(TxtIrPara.Text,out Numero)){

    ScriptManager.RegisterClientScriptBlock(this,this.GetType(),new Guid().ToString(),"alert('você deve digitar algum numero ou valor válido');",true);

    }

    else{

         ListaFiltrada(Numero);

    }

    // Agora com valor padrão é só mudar para isso que está abaixo no caso do Numero não ser convertido ele já será 0 por padrão que no seu caso irá

    // para primeira página não se esqueça que definimos a variavel numero para o retorno do try parse :

    //bool Valor = int.TryParse(TxtIrPara.Text,out Numero);

     //    ListaFiltrada(Numero);

    }


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br




    • Editado Davi Murilo quinta-feira, 11 de abril de 2013 13:12
    quinta-feira, 11 de abril de 2013 13:08
  • Muito Obrigado Davi

    Valeu mesmo

    Abraço

    quinta-feira, 11 de abril de 2013 13:45
  • Davi, como eu faria para que quando o usuario digitace um numero maior de pagina que tem no gridview, ai mostrasse para usuario a ultima pagina do gridview

    Ex: usuario digita pagina numero 50, mais no gridview so tem ate a pagina 30 por enquanto, ai seria mostrado ao usuario a ultima pagina que tem no gridview.

    Obrigado

    sexta-feira, 12 de abril de 2013 12:44
  • Tente isso :

    private void ListaFiltrada(int Numero)
    {

    int Total  = (int)(GridView1.Rows.Count / GridView1.PageSize);

    if(Total < 0)

    {

      GridView1.PageIndex= 0;

    }

    else

    {

    if(Numero > Total)

    {

     GridView1.PageIndex = (Total - 1);

    }

    else

    {
       
    if(Numero < GridView1.PageCount)

         {
           
    GridView1.PageIndex= (Numero - 1); // Coloquei menos um assim você digita 4 , a conta é feita para o grid vai para 3 que é 4 quando começado em 0

         }

    }

    }


    }

    Espero ter ajudado.


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    sexta-feira, 12 de abril de 2013 13:13
  • Muito Obridado Davi

    Tive que fazer uma pequena modificaçao

    Consegui da seguinte forma

            private void ListaFiltrada(int Numero)
            {
                int Total = (int)(GridView1.PageCount - 1);
    
                if (Total < 0)
                {
                    GridView1.PageIndex = 0;
                }
    
                else
    
                {
                    if (Numero > Total)
                    {
                        GridView1.PageIndex = Total;
                    }
    
                    else
    
                    {
                        if (Numero < GridView1.PageCount)
                        {
                            GridView1.PageIndex = (Numero - 1);
                        }
                    }
                }
            }
    
            protected void BtnIrPara_Click(object sender, EventArgs e)
            {
                int Numero;
    
                if(!int.TryParse(TxtIrPara.Text,out Numero))
                {
    
                }
    
                else
    
                {
                    ListaFiltrada(Numero);
                }
            }


    sexta-feira, 12 de abril de 2013 14:45
  • Certo , esqueci que a propriedade PageCount já trazia o total de Pages vamos limpar seu código e deixa-lo melhor faça isso :

    private void ListaFiltrada(int Numero) { int Total = (GridView1.PageCount - 1); GridView1.PageIndex = (Numero > Total)? Total : (Numero == 0) ? Numero : Numero - 1;

    } protected void BtnIrPara_Click(object sender, EventArgs e) { int Numero; bool Valida = int.TryParse(TxtIrPara.Text,out Numero); ListaFiltrada(Numero); }


    Espero ter ajudado.

    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br


    • Editado Davi Murilo sexta-feira, 12 de abril de 2013 15:14
    sexta-feira, 12 de abril de 2013 15:11
  • Valeu, muito obridado Davi
    segunda-feira, 15 de abril de 2013 14:08