• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

MACkie

[SOLVED] Problema com métodos

16 mensagens neste tópico

Houston, we have a problem!

Bem, o que se passa é o seguinte:

Eu tenho três métodos separados que, resumidamente, fazem o seguinte:

- proximaNoticia: mostra a noticia imediatamente a seguir na BD;

- anteriorNoticia: mostra a noticia imediatamente anterior;

- goTo: mostra a noticia com o número especificado.

Problema:

- o método proximaNoticia só funciona se quiser passar do numero 1 para o 2. Usei um incrementador (tipo selectedIndex++);

- o método anteriorNoticia, independentemente do número, passa sempre para a primeira noticia. Usei um decrementador (tipo selectedIndex--);

- o método goTo funciona como deve de ser.

Observações: o código dos três métodos é exactamente igual excepto o valor da variável: +1 para o primeiro, -1 para o segundo, user defined para o terceiro.

A acção é desencadeada ao clicar num botão.

Alguma possível solução?

Deixo aqui em "anexo" o método para passar para a seguinte.

protected void nextNews(object sender, EventArgs e)
    {
        
        if (selectedNews <= Convert.ToInt32(totalNews))
        {
            sqlconnect();
            this.selectedNews++;
            MySqlCommand nextCommand = new MySqlCommand("Select * from news where number = '" + selectedNews + "'", connection);
            MySqlDataReader reader = nextCommand.ExecuteReader();
            while (reader.Read())
            {
                newsArray[0] = (string)reader["title"].ToString();
                newsArray[1] = (string)reader["body"].ToString();
            }
            Label1.Text = newsArray[0].ToString();
            TextBox1.Text = selectedNews + " de " + totalNews;
            sqldisconnect();
        }
    }

Cumprimentos,

MACkie

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu selectedindex ou seja o ID da noticia vais buscar por QueryString ou guardas em sessão? e que pelo que descreves parece que ele inicia sempre cada vez que faz load da pagina  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

you got a point. Não me lembrei disso.

Cada vez que ele "navega" para outra noticia, faz um reload da página reinicializando assim a variável.

Como é que eu faço para se manter?

Cumps

EDIT: Passo o valor da variável com um POST? Tal como em php...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes adicionar a sessão:

Session.Add("IDNoticia", SelectedNews);

e apanhas a variavel com:

SelectedNews = Convert.ToInt32(Session("IDNoticia"))

ou então:

Response.Redirect("Noticias.aspx?IDNoticia=" & SelectedNews);

e depois apanhas a variavel com o:

SelectedNews = Convert.ToInt32(Request.QueryString("IDNoticia"));

Sorry se tiver algum erro lol ja nao programo em C# a um bom tempo :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tou com problemas é onde crio a sessão. Se criar na página de "index" das noticias - e a aparecer a primeira - cada vez que fizer o reload volta à primeira, certo?

Devo iniciar a sessão na "default.aspx"?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando vais as noticias aparece sempre a primeira?

A melhor abordagem era fazeres por querystring.

Entrar na pagina das noticias, se aparecer sempre a primeira entao fica algo do tipo: Noticias.aspx?IDNoticia=1 ou se nao entrares na primeira depende noticia entao do tipo Noticias.aspx?ID=X.

Depois no codigo do butao ias buscar a querystring da maneira que eu ja te disse anteriormente:

intIDNoticia = Convert.ToInt32(Request.QueryString("IDNoticia"));

e ai fazeres o increment  :cheesygrin:

depois redireccionas para essa noticia:

Response.Redirect("Noticias.aspx?IDNoticias" + intIDNoticia);

Nota que depois a noticia no page load ia ser carregada conforme o ID no URL  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agora nao me aparece nada porque dá-me erro :S

Tou a fritar :x

Tou aqui a ver se consigo perceber isto através de uns livros... Tá dificil.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol  :hmm: nunca fui muito bom a explicar...

como usar pagina de noticias como querystring:

-No Page Load

            sqlconnect();
            selectedNews = Convert.ToInt32(Request.QueryString("IDNoticia"));
            MySqlCommand nextCommand = new MySqlCommand("Select * from news where number = '" + selectedNews + "'", connection);
            MySqlDataReader reader = nextCommand.ExecuteReader();
            while (reader.Read())
            {
                newsArray[0] = (string)reader["title"].ToString();
                newsArray[1] = (string)reader["body"].ToString();
            }
            Label1.Text = newsArray[0].ToString();
            TextBox1.Text = selectedNews + " de " + totalNews;

Depois no butão:

protected void nextNews(object sender, EventArgs e)
    {
        
        if (selectedNews <= Convert.ToInt32(totalNews))
        {
            sqlconnect();
            selectedNews = Convert.ToInt32(Request.QueryString("IDNoticia"));
            this.selectedNews++;
            MySqlCommand nextCommand = new MySqlCommand("Select * from news where number = '" + selectedNews + "'", connection);
            MySqlDataReader reader = nextCommand.ExecuteReader();
            while (reader.Read())
            {
                newsArray[0] = (string)reader["title"].ToString();
                newsArray[1] = (string)reader["body"].ToString();
            }
            Label1.Text = newsArray[0].ToString();
            TextBox1.Text = selectedNews + " de " + totalNews;
            sqldisconnect();
        }
    }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e, no meio disso tudo, continuo sem saber onde meto o Session.add("IDNoticia", selectedIndex); :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e, no meio disso tudo, continuo sem saber onde meto o Session.add("IDNoticia", selectedIndex); :s

Se utilizares o metodo da querystring nao precisas de usar o session :( ja para nao falar do facto de poderes a qualquer momento entrar na noticia 3 ou 4 ou 5 directamente :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Consegui!

Utilizei os QueryStrings para fazer um retrieve da newsid. Tava a dar espiga até meter o "autoredirect" de news.aspx para news.aspx?NewsID=1

Muito obrigado. Este era o meu maior problema porque o funcionamento das noticias vai ser igual para o da galeria de fotos.

Havia de te nascer três grades de cerveja no frigorífico :(

Cups

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hahaah  :)

ainda bem que conseguis-te :) hehe

Não te esquesas e de meter Resolvido no nome do topico para um melhor funcionmento do mesmo :)

Cumps  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora