Jag vet inte vad det är som är fel, eller vars värdet tar vägen..
Har en ddl med ett antal val,
ddl vid button_click skickar värdet på detta sätt in i en control
If IsNumeric(ddl.SelectedValue.ToString) Then
Response.Write(ddl.SelectedValue)
ctrlBannerList.DistrictId = ddl.SelectedValue
Else
ctrlBannerList.DistrictId = Integer.MinValue
End If
Här på response.write, skriver den ut värdet..
I controllen så har jag en property
Private m_DistrictId As Integer
Public Property DistrictId() As Integer
Get
Return m_DistrictId
End Get
Set(ByVal Value As Integer)
m_DistrictId = Value
End Set
End Property
Som skal fånga upp värdet och sätta in den i följande metod
Private Sub BindControls()
Dim read As New GetData
Dim ds As DataSet
If Me.DistrictId <> Integer.MinValue Then
Response.Write(Me.DistrictId)
ds = read.GetRandomBanners(Today, Me.DistrictId)
End If
If Not ds Is Nothing Then
rptBannerList.DataSource = ds
rptBannerList.DataBind()
End If
End Sub
Men, här skriver Den ut Me.DistrictId som 0, och inte det värde som skrivs ut i tidigare.. så någonstans försvinner värdet.. för DET finns ju, har ju kollat det, men var tar det vägen?
Protected WithEvents ctrlBannerList As BannerListCtrl
' I Button_Click metoden metoden..
If IsNumeric(ddl.SelectedValue.ToString) Then
Response.Write(ddl.SelectedValue)
ctrlBannerList.DistrictId = ddl.SelectedValue
Else
ctrlBannerList.DistrictId = Integer.MinValue
End If
Men men.. den skickar aldrig värdet till controllen..
Om du har Visual Studio kan du ju stega igenom funktiionen och se vad som går fel.
Jag skulle tro att
If IsNumeric(Convert.ToInt32(ddl.SelectedValue.ToString)) Then
i princip borde lösa dina problem eftersom det visar sig varje gång att ddl.SelectedValue.ToString inte blir numeriskt av en eller annan anledning. Integer.MinValue är ju som sagt 0.
1. Slå på Option Strict överallt
2. Använd Integer.TryParse i stället för IsNumeric (säkerställer att det är Integer)
3. Kontrollen bör även lagra värdet i ViewState. Annars försvinner det i nästa postback.
4. BindControls måste köras efter Button_Click.
1. Slå på Option Strict överallt
2. Använd Integer.TryParse i stället för IsNumeric (säkerställer att det är Integer)
3. Kontrollen bör även lagra värdet i ViewState. Annars försvinner det i nästa postback.
4. BindControls måste köras efter Button_Click.
Jo jo.. men Integer.TryParse är inte .NET 1.0
satt över den i viewstate, visste att det var något som saknades :e Så visst funkar det nu, men inte riktigt till fullbelåtenhet, utan den ändrar värdet först efter andra klicket på submitknappen..