Hej. sätt en breakpoint på raden 'AdminFlags = Grid1.SelectedDataKey.Values(2)' Tack för ditt svar Cecilia. Grid1.SelectedDataKey speglar den rad som var vald rad från föregående sida. När du ändrar selected index uppdateras inte det förrän den nya sidan har laddats dvs det har blivit en databound. Du kan tvinga fram en databind också genom att köra DataBind() metoden av grid objektet efter att du valt om indexet.Ändra bild på knapp i GridView
Jag har en grid som på varje rad har en knapp för att visa status på ett avtal. Genom att klicka på denna kan man ändra status. Tanken är att adminfunktion använder denna sida.
Jag har gjort så att jag laddar gridden med data och går sen in med en funktion som sätter rätt bildpå knappen. Detta fungerar bra när sidan laddas första gången men när sidan sorteras så får jag fel (Object reference not set to an instance of an object.) Detta får jag på raden 'AdminFlags = Grid1.SelectedDataKey.Values(2)'. Lägger jag till Paging så blir det inte fel men grundbilderna kommer tillbaka.
Har prövat med Event grid1.sorted och grid1.pageindexchanged men det fungerar inte.
Nedan är min kod för detta:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
'CheckMembership()
CheckAvtal()
End If
End Sub
Private Sub CheckAvtal()
Dim _Rows As Integer = Grid1.Rows.Count
Dim AdminFlags As String
Dim _Button As ImageButton
Dim Bit0 As Integer = BitVector32.CreateMask()
Dim Bit1 As Integer = BitVector32.CreateMask(Bit0)
Dim _Varde As New BitVector32()
For x = 0 To _Rows - 1
Grid1.SelectedIndex() = x
AdminFlags = Grid1.SelectedDataKey.Values(2)
_Varde = New BitVector32(AdminFlags)
'Flagga1, Demo
If _Varde.Item(Bit0) Then
_Button = Grid1.SelectedRow.FindControl("ButtonAvtal")
_Button.ImageUrl = "~/Images/ButtonDemo.png"
End If
'Flagga2, Avtal
If Not _Varde.Item(Bit1) Then
_Button = Grid1.SelectedRow.FindControl("ButtonAvtal")
_Button.ImageUrl = "~/Images/ButtonAvtalRed.png"
End If
Next
End Sub
Protected Sub ChangeAvtal_Click(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles Grid1.RowCommand
message2.Text = ""
Select Case e.CommandName.ToString
Case "Sort"
Grid1.SelectedIndex = Nothing
CheckAvtal()
message2.Text = "Sort"
Case "Select"
Case "Page"
CheckAvtal()
Case Else
Dim AdminFlags As String
Dim Bit0 As Integer = BitVector32.CreateMask()
Dim Bit1 As Integer = BitVector32.CreateMask(Bit0)
Dim _Varde As New BitVector32()
AdminFlags = Grid1.SelectedDataKey.Values(2)
_Varde = New BitVector32(AdminFlags)
message2.Text = "Knapp"
End Select
Mvh
Classe AndskärSv: Ändra bild på knapp i GridView
Kontrollera sedan om det är SelectedDataKey eller Values som är Nothing.
Du har dessutom två rader men den koden, vilken rad är det som blir fel?Sv:Ändra bild på knapp i GridView
Det verkar som mina DataKeys har försvunnit. Har provat en massa varianter men det är dessa
som blir fel.
Det är raden i function checkAvtal som blir fel.
/ClasseSv: Ändra bild på knapp i GridView
...
Grid1.SelectedIndex() = x
Grid1.DataBind()
AdminFlags = Grid1.SelectedDataKey.Values(2)
...