webForumDet fria alternativet

Knapp, räkna +1 varje gång

.NET

8 svar · 297 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hej!

Ponera att jag har en knapp och en räknare
.aspx

<form id="Form1" method="post" runat="server">
<asp:Button id="btnNext" runat="server" Text="Plus 1"></asp:Button>
</form>

Code-Behind(VB):

Dim Cnt As Integer = 1
    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        Cnt += 1
        Response.Write(Cnt)
    End Sub

...och att jag vill att "Cnt" ska räkna +1 varje gång jag klickar på knappen, hur gör jag då?
I detta fall räknas det bara upp 2 och sen stannar det där...

Medlem sedan aug. 20003 575 inlägg
#2

Du dimmar ju om variabeln varje gång du laddar sidan.
Dim Cnt As Integer = 1

Medlem sedan maj 20012 812 inlägg
#3

Du måste behålla värden för knappen mellan de olika sidanropen. Om det endast är mellan olika postbacks på samma sida så kan du använda dig av ViewStaten.

Om du skall hålla värdet mellan olika sidanrop så måste du använda dig av Session/Cookies.

Om det skall vara så att om en användare trycker på knappen så skall det räknas upp globalt för alla användare, så kan du använda dig av Cachen eller ännu bättre göra din variable static, vilket då kommer att göra så att alla besökare får se samma värde. Tänk dock på att du måste göra läsning och skrivning trådsäkert så att du inte får att olika trådar försöker skriva samtidigt, det kommer genererar fel.

- M

Medlem sedan mars 20011 346 inlägg
#4

Gladh skrev:

Om det endast är mellan olika postbacks på samma sida så kan du använda dig av ViewStaten.

Japp, det kommer att vara på samma sida, hur kan jag använda viewstate för detta?

Medlem sedan mars 20011 346 inlägg
#5

Nickemannen skrev:

Du dimmar ju om variabeln varje gång du laddar sidan.
Dim Cnt As Integer = 1

Den ligger ju utanför subben, räcker inte det?

Medlem sedan aug. 20003 575 inlägg
#6

ironhead skrev:

Nickemannen skrev:

Du dimmar ju om variabeln varje gång du laddar sidan.
Dim Cnt As Integer = 1

Den ligger ju utanför subben, räcker inte det?

Inte om du inte använder PageBack

Medlem sedan nov. 20017 144 inlägg
#7
        Sub page_Load(obj as object, e as eventargs)
		myCounter.text = Viewstate("mycounter")
	End sub
	Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
		ViewState("mycounter") +=1
	End sub

Så här kanske?

Medlem sedan mars 20011 346 inlägg
#8

Jesper T skrev:

        Sub page_Load(obj as object, e as eventargs)
		myCounter.text = Viewstate("mycounter")
	End sub
	Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
		ViewState("mycounter") +=1
	End sub

Så här kanske?

Det där fick jag inte alls att funka....myCounter visar ingenting alls :-/

Medlem sedan mars 20011 346 inlägg
#9

heh! :r Nu fick jag ovanstående att fungera, vet inte varför det inte funkade sist.
Problemet är bara att när jag klickar på knappen första gången, så är viewstate ingenting, så den räknar inte heller upp med +1, hur kan man göra så att den gör det med detsamma?

290 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
166 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)