NETITC
 


>> Navegação >> Tópico >> SubTópico
NomeTítulo Tópicos
Guto Xavier
Dúvida iniciada: 7/18/2008 3:20:38 PM

Busca com paginação


Dúvida:  

Peguei uma página já pronta, por isso não posso mudar muita coisas(acrescentar componentes) e preciso fazer nela paginação e um campo para busca, e quando efetuar a busca, o resultado seja paginado.
A paginação sozinha ta funcionando legal, a busca também funciona, porém quando efetuo a busca a paginação funciona teoriacamente, pois quando eu clico pra ir pra próxima página dos resultados das buscas não da certo, não está dando erro mas também ele não mostra os próximos registros.
Segue o código:

 

<script language="C#" runat="server">
int varPagIndex = 0, varAux = 0, varNPag;
string varBusca = "", varBusca2 = "";
public void Page_Load( Object sender, EventArgs e )
{
if( Request.QueryString["i_pag"] == null)
{
varPagIndex = 0;
}else{
varPagIndex = int.Parse(Request.QueryString["i_pag"]);
}
varNPag = varPagIndex;
lblLista.Text = populaListaReleases();
}

public string populaListaReleases()
{
string SQL = "", saida = "", data = "";
varPagIndex = varPagIndex * 10;
varBusca = Request.QueryString["txtBusca"];
if(varBusca == "")
{
SQL = "SELECT TOP 10 * FROM imprensa_banco WHERE (id NOT IN (SELECT TOP " + varPagIndex + " id FROM imprensa_banco order by id desc)) ORDER BY ID DESC; SELECT count(*) as contagem FROM imprensa_banco ";
}
else
{
SQL = "SELECT TOP 10 * FROM imprensa_banco WHERE (id NOT IN (SELECT TOP " + varPagIndex + " id FROM imprensa_banco order by id desc)) and titulo LIKE '%" + varBusca + "%' ORDER BY ID DESC; SELECT count(*) as contagem FROM imprensa_banco where titulo LIKE '%" + varBusca + "%' ";
varBusca2 = "&txtBusca=" + varBusca ;
}
OleDbCommand Cmd = new OleDbCommand( SQL, Conn );
Conn.Open();
OleDbDataReader r = Cmd.ExecuteReader();

saida += "<ul>";
while ( r.Read() )
{
if ( data != DateTime.Parse( r["data"].ToString() ).ToString("dd/MM/yyyy") ) saida += "<p class='data'>" + DateTime.Parse( r["data"].ToString() ).ToString("dd/MM/yyyy") + "</p>";
saida += "<li>" + DateTime.Parse( r["data"].ToString() ).ToString("hh:mm") + " - ";
if( r["foto_arquivo"].ToString().Trim() != "" ) saida += "<img src=\"http://www.puc-campinas.edu.br/img/icone_multi_foto.gif\" /> ";
saida += "<a href=\"release2.aspx?id=" + r["id"].ToString() + "\">" + r["titulo"].ToString() + "</a></li>";
data = DateTime.Parse( r["data"].ToString() ).ToString("dd/MM/yyyy");
}
saida += "</ul>";
r.NextResult();
int varContagem = r.GetOrdinal("contagem");
r.Read();
double varQtdPaginas = (r.GetInt32(varContagem));
Response.Write( varQtdPaginas);
varAux = Convert.ToInt32(Math.Ceiling(varQtdPaginas/10));
r.Close();
Conn.Close();
return saida;
}

</script>

 

 

<form action="index2.aspx?i_pag=<%Response.Write(varNPag);%>" name="form1" method="get">
<input type="text" name="txtBusca" class="fonte_padrao_form" value=<%if(varBusca!=null){ Response.Write(varBusca);}%>>
&nbsp;<input type="submit" name="submit" value="Pesquisar" class="fonte_padrao">
</form>

<div id="lista">
<asp:label ID="lblLista" runat="server" />
</div>
</div>
<%

if(varNPag != 0)
{
%>
<a href="index2.aspx?i_pag=<%Response.Write(varNPag-1);%>&txtBusca=<%Response.Write(varBusca);%>"> Anterior </a> |
<%
}else{
%>
Anterior |
<%
}
for(int i = 0 ; i < varAux ; i++)
{
if ( varNPag == i)
{
%>
<font color="#ff0000"><%Response.Write(i+1);%></font> |
<%
}else{
%>
<a href="index2.aspx?i_pag=<%Response.Write(i);%>&txtBusca=<%Response.Write(varBusca);%>"><%Response.Write(i+1);%></a> |
<%
}
}
if(varNPag != varAux)
{
%>
<a href="index2.aspx?i_pag=<%Response.Write(varNPag+1);%>&txtBusca=<%Response.Write(varBusca);%>"> Próximo </a> |
<%
}else{
%>
Próximo |
<%
}
%>
<hr />
<a href="/imprensa">« Voltar</a>

 

 



Respostas Data Resposta: 7/17/2008 1:35:06 PM
Mauricio Junior Guto Xavier

Você não precisa fazer no select.... pode utilizar o dataSet que o componente gridview faz pra você.
Já tentou isso?
Respostas Data Resposta: 7/17/2008 3:33:00 PM
Guto Xavier Não tentei, pode me dar uma ajuda com o código, porque como falei sou novo com c#, sempre programei em asp, e não tenho acesso ao visual studio, utilizo o dreamweaver.
Respostas Data Resposta: 7/18/2008 3:20:37 PM
Mauricio Junior Guto,

O Visual Studio é uma ferramenta muito boa, onde te ajuda com todas as forças a programar. Necessariamente você precisa instalá-la para programar verdadeiramente. Existem alguns exemplos que posso te passar, mas os mesmos foram feitos na ferramenta de desenvolvimento.

http://www.aspneti.com/GridView+Parte+I+152,0.aspx
http://www.aspneti.com/GridView+Parte+II+155,0.aspx
http://www.aspneti.com/GridView+Parte+III+161,0.aspx

Espero ter ajudado, qualquer dúvida favor entrar em contato ou postar no fórum.

PROGRAMANDO EM ASP.NET


Vídeos

 
Vídeo: Gerando Hash com .NET


Visto por 753 pessoas.

Criptografia para ser usada na URL


Visto por 1023 pessoas.

Mudar o toque do iPhone


Visto por 1608 pessoas.

Vídeo: MD5


Visto por 1170 pessoas.

12345678