Qull'errore ti viene dato perche utilizzi questo codice:

codice:
Dim LabelCat As Label = DataGrid1.Items(e.Item.ItemIndex).Cells(3).FindControl("lblDgCat")
In una Routine d'evento di questo tipo:
codice:
Sub NomeRoutine(Obj as Object, E as EventArgs)
   '.....
End Sub
Che invece dovrebbe essere così:
codice:
Sub NomeRoutine(Obj as Object, E as DataGridItemEventArgs)
   '.....
End Sub

Per il tuo problema prova a lavorare sull'evento "ItemCreated" del datagrid.