Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Peterson Ricardo

manter valor da variavel

Recommended Posts

pessoal, estou montando um controle para navegar registros de um sqldatareader

 

oq fiz...

 

criei uma variavel para armazenar o numero da linha

 

public nreg as integer na area da classe

 

clico no proximo = variavel +1

clico no anterior = variavel -1

clico no primeiro = 0

clino no ultimo = total de linhas - 1

 

e exibo nos textbox o conteudo dos campos na linha

 

mas...

 

a minha variavel esta zerando... eu sei que tem um tipo de variavel que nao deixa zerar cada vez que a pagina é carregada

 

not postback ???

 

alguem pode me iluminar...

 

valeu

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso é melhor utilizar Session, pois para sua variável não peder valor terá que usar variável static, mas o static deixará um unico valor para todos os browser que acessarem seu sistema ao mesmo tempo.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu usei a session e funcionou legal

 

agora estou tendo outro problema

 

 

eu carrego o dataset da tabela no load

 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
		If Not Page.IsPostBack Then
			Session("nreg") = 0
			carregar_dados()
		End If
End Sub


	Private Sub carregar_dados()
		Dim ds_prod As DataSet = New DataSet()
		Dim cmdSql As String = "select * from produto "
		Dim cmd As New SqlDataAdapter(cmdSql, conDB)
		cmd.Fill(ds_prod, "tmp_produto")
		Session("dados") = ds_prod
		carregar_campos()
	End Sub

	Private Sub carregar_campos()
		nreg = Session("nreg")
		Dim ds_prod As DataSet = New DataSet()
		ds_prod = Session("dados")
		txt_codigo_produto.Text = ds_prod.Tables("tmp_produto").Rows(nreg).Item(0)
		txt_produto.Text = ds_prod.Tables("tmp_produto").Rows(nreg).Item(1)
	End Sub

quando eu clico no botao proximo registro...

 

Protected Sub btn_proximo_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_proximo.Click
		Session("nreg") += 1
		nreg = Session("nreg")
		If nreg >= ds_prod.Tables("tmp_produto").Rows.Count() Then
			Session("nreg") = ds_prod.Tables("tmp_produto").Rows.Count() - 1
			nreg = Session("nreg")
		End If
		carregar_campos()
	End Sub

 

da erro no meu data_set que nao está preenchido...

 

tenho que carregar em cada procedimento o data_set ?

 

não tem uma maneira de carregar uma vez e ficar disponível para todos os procedimentos?

 

 

abraços

Peterson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Programação web é bem diferente de programação para windows.

Nesse caso, você tem duas opções.

1) Carregar o dataset toda vez.

2) No Page_Load colocar o dataset no ViewState, depois todas as operações usam o dataset que está no ViewState.

 

Mas não recomendo nenhum dos dois métodos.

Na verdade, o primeiro está mais correto, só que ao invés de carregar o dataset inteiro e depois só mostrar a linha que você quer, você poderia fazer um comando sql que só traz uma linha baseada na variavel nreg. No seu exemplo, você está trazendo N quantidade de linhas e só está usando 1 delas, sendo que você pode retornar somente a linha específica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Programação web é bem diferente de programação para windows.

Nesse caso, você tem duas opções.

1) Carregar o dataset toda vez.

2) No Page_Load colocar o dataset no ViewState, depois todas as operações usam o dataset que está no ViewState.

 

Mas não recomendo nenhum dos dois métodos.

Na verdade, o primeiro está mais correto, só que ao invés de carregar o dataset inteiro e depois só mostrar a linha que você quer, você poderia fazer um comando sql que só traz uma linha baseada na variavel nreg. No seu exemplo, você está trazendo N quantidade de linhas e só está usando 1 delas, sendo que você pode retornar somente a linha específica.

 

entendi...valeu pela atenção

vou fazer mais teste

 

abraço

Peterson

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.