Avevo provato anche io così, ma continua a non funzionare.
Ti riposto il codice per intero, forse può dipendere dal fatto che sto usando la classe dello Hierargrid?:
	codice:
	Imports System.Data.oledb
imports system.data
Public Class HierarGridDemo
    Inherits System.Web.UI.Page
    Dim ds As New DataSet()
    Protected WithEvents HG1 As DBauer.Web.UI.WebControls.HierarGrid
'SUB DEL PAGE_LOAD 
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If (Not Me.IsPostBack) Then
            Origine()
            binda()
        End If
    End Sub
'SUB DEL DATABINDING 
    Sub binda()
        HG1.DataSource = ds
        HG1.DataMember = "table1"
        HG1.DataBind()
    End Sub
'SUB DEL L'ORIGINE DATAGRID 
    Sub Origine()
        Dim conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database/lafer.mdb"))
        Dim Adapter As New OleDbDataAdapter("SELECT * FROM tab_sup_cat", conn)
        Dim Adapter2 As New OleDbDataAdapter("Select * from tab_cat", conn) '("Select tabella1.id, tabella2.campofiglio from tabella1,tabella2 where tabella1.Id=tabella2.rif", conn)
        Dim Adapter3 As New OleDbDataAdapter("Select * from tab_sotto_cat", conn) '("Select tabella2.id, tabella3.campofiglio from tabella2,tabella3 where tabella2.Id=tabella3.rif", conn)
        Adapter.Fill(ds, "table1") 'sup_cat
        Adapter2.Fill(ds, "table2") 'cat
        Adapter3.Fill(ds, "table3") 'sotto_cat
        Dim Parent As DataColumn
        Dim Child As DataColumn
        Parent = ds.Tables("table1").Columns("ID_sup_cat")
        Child = ds.Tables("table2").Columns("id_sup_cat")
        Dim dr As DataRelation = New DataRelation("newrelation", Parent, Child, False)
        ds.Relations.Add(dr)
        Parent = ds.Tables("table2").Columns("ID_cat")
        Child = ds.Tables("table3").Columns("id_cat")
        dr = New DataRelation("newrelation2", Parent, Child, False)
        ds.Relations.Add(dr)
    End Sub
'SUB ELIMINA 
    Sub EliminaDataGrid(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
        
    End Sub
'SUB MODIFICA 
    Sub ModificaDataGrid(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
        HG1.EditItemIndex = e.Item.ItemIndex
        Origine()
        binda()
    End Sub
'SUB ANNULLA 
    Sub AnnullaDataGrid(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
        HG1.EditItemIndex = -1
        binda()
    End Sub
'SUB AGGIORNA 
    Sub AggiornaDataGrid(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
        Dim Conn As Data.OleDb.OleDbConnection
        Dim MySQL3 As String
        Dim MyCmd As Data.OleDb.OleDbCommand
        Dim id_sup_cat, nome_sup_cat As String
        id_sup_cat = CType(e.Item.Cells(1).Controls(1), Label).Text
        nome_sup_cat = CType(e.Item.Cells(2).Controls(0), TextBox).Text
        Conn = New Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database/lafer.mdb"))
        Conn.Open()
        MySQL3 = "UPDATE tab_sup_cat SET nome_sup_cat = '" & nome_sup_cat & "' WHERE ID_sup_cat = " & id_sup_cat
        MyCmd = New Data.OleDb.OleDbCommand(MySQL3)
        MyCmd.Connection = Conn
        MyCmd.ExecuteNonQuery()
        HG1.EditItemIndex = -1
        Origine()
        binda()
    End Sub
    Private Sub HG1_TemplateSelection(ByVal sender As Object, ByVal e As DBauer.Web.UI.WebControls.HierarGridTemplateSelectionEventArgs) Handles HG1.TemplateSelection
        Select Case (e.Row.Table.TableName)
            Case "table2"
                e.TemplateFilename = "file2.ascx"
        End Select
    End Sub
    Sub HG1_Paging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)
        HG1.CurrentPageIndex = e.NewPageIndex
        binda()
    End Sub
End Class
 
Riesci ad aiutarmi?
Grazie