I'm creating a dynamic gridview in vb.net using a connected sql database. Everything works fine except 1 thing: when i click the update command, the event just won't fire no matter what I do. the gridview goes into edit mode and the cancel button works fine. This has cost me over 2 days of googling but none of the solutions work. I used breakpoints to check if the code was executed, but it wasn't. If anybody has any experience in this: all help is appreciated! I believe the problem lies in the addhandler but it doesn't give any errors. thanks in advance. I forgot to mention that the sql command was a test and sets the data in that field to 15, now it's 10, it works when i use a normal button or a static gridview.
Public Class WebForm1
    Inherits System.Web.UI.Page
    Dim rowscount As Integer = 2
    Dim colcount As Integer = 18
    Dim aantalitems As Integer = 0
    Dim sqlstring() As String
    Dim hj As String
    Dim k As Integer = 0
    Dim l As Integer = 0
    Dim m1 As Integer = 0
    Dim m2 As Integer = 0
    Dim m3 As Integer = 0
    Dim cellheight As Integer = 20
    Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Creat the Table and Add it to the Page
        GetItems()
    Dim table As New Table()
    table.ID = "Table"
    Page.Form.Controls.Add(table)
    table.HorizontalAlign = HorizontalAlign.Center
    ' Now iterate through the table and add your controls 
    For i As Integer = 0 To (aantalitems) * 2
        Dim row As New TableRow()
        For j As Integer = 0 To rowscount - 1
            Dim tb As New GridView
            Dim cell As New TableCell()
            Dim cnnstring As New SqlClient.SqlConnection
            Dim sdrString As SqlClient.SqlDataReader
            Dim scmdString As New SqlClient.SqlCommand
            If i Mod 2 = 0 And j = 0 Then
                Dim label As New Label
                label.ID = j & i
                cell.Height = cellheight
                ReDim Preserve sqlstring(aantalitems)
                label.Text = sqlstring(k)
                cell.Controls.Add(label)
                row.Cells.Add(cell)
            ElseIf i Mod 2 = 0 Then
                Dim label As New Label
                label.ID = j & i
                cell.Height = cellheight
                label.Visible = False
                cell.Controls.Add(label)
                row.Cells.Add(cell)
            Else
                If j = 1 Then
                    cnnstring.ConnectionString = My.Settings.link
                    scmdString.Connection = cnnstring
                    cnnstring.Open()
                    ReDim Preserve sqlstring(aantalitems)
                    scmdString.CommandText = "SELECT Maat, min_voorraad, Huidige_voorraad, Actief, Frequentie FROM tblStock WHERE Item = '" & sqlstring(k) & "'"
                    k += 1
                    sdrString = scmdString.ExecuteReader
                    ' Set a unique ID for each TextBox added
                    tb.ID = "GV" & i & "_" & j
                    tb.DataSource = sdrString
                    tb.AutoGenerateEditButton = True
                    tb.EnableSortingAndPagingCallbacks = True
                    AddHandler tb.RowEditing, AddressOf TaskGridView_RowEditing
                    AddHandler tb.RowCancelingEdit, AddressOf TaskGridView_RowCancelingEdit
                    AddHandler tb.PageIndexChanging, AddressOf TaskGridView_PageIndexChanging
                    AddHandler tb.RowUpdating, AddressOf TaskGridView_rowupdating
                    tb.DataBind()
                    ' Add the control to the TableCell
                    cell.Controls.Add(tb)
                    ' Add the TableCell to the TableRow
                    row.Cells.Add(cell)
                    ' vanaf hier invoeren wat er in de textboxen moet komen
                    cnnstring.Close()
                    sdrString.Close()
                    cnnstring.Dispose()
                    sdrString.Dispose()
                    scmdString.Dispose()
                Else
                    Dim afbeelding As New Image
                    afbeelding.ID = "Afbeelding" & i.ToString
                    cell.Controls.Add(afbeelding)
                    row.Cells.Add(cell)
                    afbeelding.ImageAlign = ImageAlign.Bottom
                    ReDim Preserve sqlstring(aantalitems)
                    afbeelding.ImageUrl = My.Settings.Iurl & sqlstring(l) & ".jpg"
                    l += 1
                End If
            End If
        Next
        ' Add the TableRow to the Table
        table.Rows.Add(row)
    Next
End Sub
Sub CustomersGridView_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
    Dim customersGridView As GridView = CType(sender, GridView)
    Dim frequntie As String = customersGridView.Rows(e.NewEditIndex).Cells(5).Text
    If frequntie = "1x jaar" Then
        e.Cancel = True
        MsgBox("You cannot edit this record.")
    Else
        MsgBox("")
    End If
End Sub
Protected Sub TaskGridView_rowupdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
    Dim Taskgridview As GridView = CType(sender, GridView)
    Dim cnnstring5 As New SqlClient.SqlConnection
    Dim scmdstring5 As New SqlClient.SqlCommand
    MsgBox("zou het werken?")
    cnnstring5.ConnectionString = My.Settings.link
    scmdstring5.Connection = cnnstring5
    cnnstring5.Open()
    scmdstring5.CommandText = "UPDATE tblStock SET min_voorraad = 15"
    scmdstring5.ExecuteNonQuery()
    cnnstring5.Close()
    cnnstring5.Dispose()
    scmdstring5.Dispose()
End Sub
Protected Sub TaskGridView_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
    Dim Taskgridview As GridView = CType(sender, GridView)
    Taskgridview.PageIndex = e.NewPageIndex
    'Bind data to the GridView control.
    MsgBox("Dit werkt")
    Taskgridview.DataBind()
End Sub
Protected Sub TaskGridView_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
    Dim Taskgridview As GridView = CType(sender, GridView)
    'Set the edit index.
    Taskgridview.EditIndex = e.NewEditIndex
    'Bind data to the GridView control.
    Dim cnnstring3 As New SqlClient.SqlConnection
    Dim sdrString3 As SqlClient.SqlDataReader
    Dim scmdstring3 As New SqlClient.SqlCommand
    Dim uniekeID, subUniekeID As String
    Dim ez As Integer = 0
    uniekeID = Taskgridview.UniqueID.ToString
    subUniekeID = uniekeID.Substring(2, +2)
    If IsNumeric(subUniekeID) Then
        ez = CInt(subUniekeID)
        ez -= 1
        ez /= 2
    ElseIf IsNumeric(subUniekeID.Substring(0, +1)) Then
        ez = CInt(subUniekeID.Substring(0, +1))
        ez -= 1
        ez /= 2
    Else
        MsgBox("Hier is iets fout!" & vbNewLine & "Deze code werkt nog niet met over de honderd items!")
    End If
    cnnstring3.ConnectionString = My.Settings.link
    scmdstring3.Connection = cnnstring3
    cnnstring3.Open()
    ReDim Preserve sqlstring(aantalitems)
    scmdstring3.CommandText = "SELECT Maat, min_voorraad, Huidige_voorraad, Actief, Frequentie FROM tblStock WHERE Item = '" & sqlstring(ez) & "'"
    sdrString3 = scmdstring3.ExecuteReader
    Taskgridview.DataSource = sdrString3
    Taskgridview.DataBind()
    sdrString3.Close()
    cnnstring3.Close()
    sdrString3.Dispose()
    cnnstring3.Dispose()
    scmdstring3.Dispose()
End Sub
Protected Sub TaskGridView_RowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
    Dim Taskgridview As GridView = CType(sender, GridView)
    Taskgridview.EditIndex = -1
    Dim cnnstring4 As New SqlClient.SqlConnection
    Dim sdrString4 As SqlClient.SqlDataReader
    Dim scmdstring4 As New SqlClient.SqlCommand
    Dim uniekeID, subUniekeID As String
    Dim ez As Integer = 0
    uniekeID = Taskgridview.UniqueID.ToString
    subUniekeID = uniekeID.Substring(2, +2)
    If IsNumeric(subUniekeID) Then
        ez = CInt(subUniekeID)
        ez -= 1
        ez /= 2
    ElseIf IsNumeric(subUniekeID.Substring(0, +1)) Then
        ez = CInt(subUniekeID.Substring(0, +1))
        ez -= 1
        ez /= 2
    Else
        MsgBox("Hier is iets fout!" & vbNewLine & "Deze code werkt nog niet met over de honderd items!")
    End If
    cnnstring4.ConnectionString = My.Settings.link
    scmdstring4.Connection = cnnstring4
    cnnstring4.Open()
    ReDim Preserve sqlstring(aantalitems)
    scmdstring4.CommandText = "SELECT Maat, min_voorraad, Huidige_voorraad, Actief, Frequentie FROM tblStock WHERE Item = '" & sqlstring(ez) & "'"
    sdrString4 = scmdstring4.ExecuteReader
    Taskgridview.DataSource = sdrString4
    Taskgridview.DataBind()
    sdrString4.Close()
    cnnstring4.Close()
    sdrString4.Dispose()
    cnnstring4.Dispose()
    scmdstring4.Dispose()
End Sub
Private Sub GetItems()
    Dim cnnvoorraad As New SqlClient.SqlConnection
    Dim scmdVoorraad As New SqlClient.SqlCommand
    Dim sdrVoorraad As SqlClient.SqlDataReader
    Dim cnnstring As String = My.Settings.link
    cnnvoorraad.ConnectionString = cnnstring
    cnnvoorraad.Open()
    scmdVoorraad.Connection = cnnvoorraad
    scmdVoorraad.CommandText = "SELECT DISTINCT Item FROM tblStock"
    sdrVoorraad = scmdVoorraad.ExecuteReader
    Do While sdrVoorraad.Read
        Dim strLijn As String
        strLijn = sdrVoorraad.Item("Item").ToString
        ReDim Preserve sqlstring(aantalitems)
        sqlstring(aantalitems) = strLijn
            aantalitems += 1
        Loop
        cnnvoorraad.Close()
    End Sub
End Class
 
    