MMycodezMedlem sedan feb. 2010445 inlägg Hej!
Jag har en liten fråga angående en knapp jag gör till min hemsida.
Knappen ska öka med ett varje gång den trycks på.
jag har en label som skriver ut hur många gånger knappen har tryckts på labels namn är lblAntalja
och knappens namn är btnJa
jag kodar i asp.net vb språket
Protected Sub btnJa_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnJa.Click
Dim x As Integer
Dim ja As String = lblAntalja.Text
x += 1
lblAntalja.Text = "" & x & " vill komma tillbaka"
End Sub
är det inte så?
för när jag kodar såhär så stannar label räkning vid 1 .
det värmer med snabbt svar:)
MVH MyCodez
PPeter SMedlem sedan dec. 20025 483 inlägg Varje gång knappen trycks på så initialiseras x till 0, så du behöver spara undan värdet på något sätt. Antingen gör du x till en medlemsvariabel i klassen:
public class Foo
private x as integer
...
end class
...eller så kan du göra så här:
Protected Sub btnJa_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnJa.Click
Dim x As Integer
Dim ja As String = lblAntalja.Text
Integer.TryParse(ja, x)
x = x + 1
lblAntalja.Text = "" & x & " vill komma tillbaka"
End Sub
MMycodezMedlem sedan feb. 2010445 inlägg sätter man som den sista kod alternativet så stannar den fortfarande vid 1 ;( men det med public class Foo var sätter man det?
PPeter SMedlem sedan dec. 20025 483 inlägg Var lite för snabb där: om du istället har två labels, en som håller värdet (lblAntal) och en som håller den statiska texten (lblAntalJa) så fungerar detta:
Protected Sub btnJa_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnJa.Click
Dim x As Integer
Dim antal As String = lblAntal.Text
Integer.TryParse(antal, x)
x = x + 1
lblAntal.Text = x
End Sub
MmatlinMedlem sedan okt. 2006224 inlägg Eller så lagrar du värdet i ViewState så det sparas mellan varje postback. Har använt en C# -> VB.NET konverterare så är kanske inte bra optimerad VB.NET kod.
Protected Sub btnJa_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnJa.Click
Dim clickValue As Integer = 0
If (Not (ViewState("clickValue")) Is Nothing) Then
clickValue = Convert.ToInt32(ViewState("clickValue"))
End If
clickValue = (clickValue + 1)
ViewState("clickValue") = clickValue
lblAntal.Text = clickValue
End Sub
MMycodezMedlem sedan feb. 2010445 inlägg det funakar nu :) men går det att spara x:et för om man stänger ner sidan nu så lagras inte talet i x vi säger att x är 3 se när man har stängt ser sidan igen så e x 0 igen hur sparar man det?
MmatlinMedlem sedan okt. 2006224 inlägg Mja.. då får du lagra det på servern på något sätt. Antingen i en databas eller en textfil. Eftersom jag inte vet om du har tillgång till någon databas så kommer här en väldigt enkel kodsnutt om hur du kan spara ett värde till en textfil.
Dim TargetFile As StreamWriter
Try
TargetFile = New StreamWriter("test.txt", True)
Catch
Throw New Exception()
End Try
Try
TargetFile.Write(lblAntal.Text)
Catch
Throw New Exception()
End Try
TargetFile.Close()
Ingen bra kod, så jag föreslår att du googlar på spara filer i VB.NET.
MMycodezMedlem sedan feb. 2010445 inlägg Jag har tillgång till en Mysql databas men vet bara ínte hur man kopplar den till sidan riktigt blir mkt tacksam om ni kan fixa en enkel guide eller om ni vet någon bra sidan ;)
MMycodezMedlem sedan feb. 2010445 inlägg Går det att koppla en SQL databasen till Visual basic (jag kodar i den)
MMycodezMedlem sedan feb. 2010445 inlägg
matlin skrev:
Mja.. då får du lagra det på servern på något sätt. Antingen i en databas eller en textfil. Eftersom jag inte vet om du har tillgång till någon databas så kommer här en väldigt enkel kodsnutt om hur du kan spara ett värde till en textfil.
Dim TargetFile As StreamWriter
Try
TargetFile = New StreamWriter("test.txt", True)
Catch
Throw New Exception()
End Try
Try
TargetFile.Write(lblAntal.Text)
Catch
Throw New Exception()
End Try
TargetFile.Close()
Ingen bra kod, så jag föreslår att du googlar på spara filer i VB.NET.
Jag förstår itne riktigt Try saten du har gjort tror du att du kan förklara den?
MmatlinMedlem sedan okt. 2006224 inlägg
Mycodez skrev:
Jag förstår itne riktigt Try saten du har gjort tror du att du kan förklara den?
TargetFile = New StreamWriter("test.txt", True)
Här skapar/öppnar vi en fil som heter "test.txt". Vi använder en Try/Catch sats för att fånga eventuella fel som kan ske. Kan t.ex. vara rättighetsfel. Om ett fel uppstår i koden ovan så kastar vi ett generellt Exception fel som bör innehålla problemet som uppstår. Som sagt, inget vackert, men bör fungera.
Vi kan lika gärna göra:
Try
TargetFile = New StreamWriter("test.txt", True)
TargetFile.Write(lblAntal.Text)
Catch
Throw New Exception()
End Try
Så minskar vi iaf antalet Try/Catch satser.
MMycodezMedlem sedan feb. 2010445 inlägg jag får att Throw New exception() e fel när jag kodar som du göra och så står det
stackkspårning:
[Exception: Ett undantagsfel av typen System.Exception uppstod.]
_Default.btnJa_Click(Object sender, EventArgs e) in C:\inetpub\wwwroot\Default.aspx.vb:21
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +115
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981
om det ka nvar till hjälp fattar inget e ganska ny på detta :)
VVimpMedlem sedan juli 20022 537 inlägg Anledningen till att du bara får ett så pass generellt svar är för att du kastar en ren Exception.
Fånga tag i den befintliga och kasta den istället.
Try
TargetFile = New StreamWriter("test.txt", True)
TargetFile.Write(lblAntal.Text)
Catch ex As Exception
Throw ex
End Try
Eller så kan du skippa hela try-biten för tillfället.
MMycodezMedlem sedan feb. 2010445 inlägg Okej. men man får tacka ändå
Vimp skrev:
Anledningen till att du bara får ett så pass generellt svar är för att du kastar en ren Exception.
Fånga tag i den befintliga och kasta den istället.
Try
TargetFile = New StreamWriter("test.txt", True)
TargetFile.Write(lblAntal.Text)
Catch ex As Exception
Throw ex
End Try
Eller så kan du skippa hela try-biten för tillfället.
Egentligen kan du skippa Try catchen helt och hållet i detta fallet då du inte gör något vettigt i den, snarare förstör mer genom att köra Throw ex och förstör call stacken vid debugging.
Använd hellre Using i detta läget så får du automatiskt en dispose på objektet :)
Och om man fångar ett fel för att utföra något och kasta det ursprunliga vidare utan att förstöra callstacken använd enbart throw så kastas ursprungsexceptionet igen :)
MMycodezMedlem sedan feb. 2010445 inlägg Hur gör man detta med Using då?? sorry e ny på detta
Mycodez skrev:
Hur gör man detta med Using då?? sorry e ny på detta
Using streamWriter = StreamWriter("test.txt", True)
streamWriter.Write(lblAntal.Text)
End Using
MMycodezMedlem sedan feb. 2010445 inlägg När jag skiver in detta som skrev in Nickemannen med Using får jag detta fel rättare sagt Error meddelande från Visual studio:
type of 'StreamWriter' cannot be inferred from an expression containing 'StreamWriter'.
Vad e det som e fel?
Detta är koden:
Imports System.IO
Dim x As Integer
Dim antal As String = lblAntalja.Text
Dim TargetFile As StreamWriter
Integer.TryParse(antal, x)
x = x + 1
lblAntalja.Text = x
Using StreamWriter = StreamWriter("test.txt", True)
streamWriter.Write(lblAntalja.Text)
End Using
MmatlinMedlem sedan okt. 2006224 inlägg Din "Using StreamWriter = ..." använder du ett stort 'S' och sedan i din using använder du ett litet 's'.
Prova att ändra "Using StreamWriter = ..." till "Using streamWriter = ..." så borde du inte få det felet.