Usuário com melhor resposta
textbox onde usuario digita qual o numero da pagina do gridview

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
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- Marcado como Resposta Luiz Carlos Souza terça-feira, 9 de abril de 2013 14:27
Todas as Respostas
-
-
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
-
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
-
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- Marcado como Resposta Luiz Carlos Souza terça-feira, 9 de abril de 2013 14:27
-
-
-
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
-
-
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
-
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 -
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); } }
-
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
-