Newsgroup: it.comp.lang.visual-basic
Titolo: e.Item.Cells.Count

Ho una pagina con un Datagrid che ha 3 colonne pushbutton : Seleziona Edit e
Cancella , mi succede che quando viene
invocata la procedura di Update la proprietą :e.Item.Cells.Count mi ritorna
solo 3 colonne (quelle pushbutton) , come mai non vede le altre ?
Allego le parti piu' significative del codice:
Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.EditCommand
DataGrid1.EditItemIndex = e.Item.ItemIndex
FillDataSet(sqlGenerate())
End Sub
Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.CancelCommand
DataGrid1.EditItemIndex = -1
FillDataSet(sqlGenerate())
End Sub
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.UpdateCommand
' Ottiene l'ID del record da Modificare
Dim key As Long = DataGrid1.DataKeys(e.Item.ItemIndex)
Label1.Text = e.Item.Cells.Count
' Recupera i valorti aggiornati dei campi dal Datagrid
Dim tb As TextBox
'tb = CType(e.Item.Cells(4).Controls(0), TextBox)
'Dim Titolo = tb.Text
[continua ...]
End Sub
Private Sub DataGrid1_SelectRecCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.ItemCommand
Label1.Text = e.CommandName.ToString & " " & e.Item.ItemIndex
' Se l'evento viene invocato x il cambio di pagina o per l'Update
If (e.CommandName = "Page") Or (e.CommandName = "Update") Then Return
'Elimina record
If e.CommandName = "Delete" Then
[Proc di cancellazione]
End If
' Aggiungi Record al carrello
If e.CommandName = "SelectRec" Then
Dim RecCorrente As Long = DataGrid1.DataKeys(e.Item.ItemIndex)
Dim ID_Ordine As Long = Session("ID_Ordine")
Dim UtenteCorrente As utente = Session("Login")
' Se l'utente non ha ancora un carrello
If Session("ID_Ordine") Is Nothing Then 'Crea un nuovo ordine
    ID_Ordine = ordine.Nuovo(UtenteCorrente.Username)
    Session("ID_Ordine") = ID_Ordine
End If
'Aggiunge l'articolo al carrello
If ordine.Aggiungi_Articolo(ID_Ordine, RecCorrente) Then
    Server.Transfer("ok.aspx")
    Else
    FillDataSet(sqlGenerate())
End If
End If
End Sub
-- 
Ciao
Flex
[ MAIL ATTACH, SPAM, and msgs larger than 95K > /dev/null ]

Il problema è dato dalla funzione (che non avevo allegato) che si occupa di
popolare/aggiornare il Datagrid:   FillDataSet
dato dal fatto che le colonne del datagrid sono fatte via codice , infatti
se tolgo la riga :
DataGrid1.AutoGenerateColumns = False e le relative righe di codice per
generare le colonne tutto funziona al 100 %.
A cosa è dovuto ?
P.S.
Allego la proc di Binding
'Setta e Popola il DataGrid
Sub FillDataSet(ByVal strSQL As String)
Dim ds As New DataSet()
' Collega il controllo DataGrid popolando la griglia
DataGrid1.AutoGenerateColumns = False
DataGrid1.DataSource = ds
DataGrid1.DataKeyField = "ID_Catalogo"
' Colonna ID
Dim dgc_id As New BoundColumn()
dgc_id.DataField = "ID_Catalogo"
dgc_id.HeaderText = "Codice"
dgc_id.ItemStyle.Width = New Unit(30)
DataGrid1.Columns.Add(dgc_id)
' Colonna Titolo
Dim dgc_title As New BoundColumn()
dgc_title.DataField = "Titolo"
dgc_title.HeaderText = "Titolo"
DataGrid1.Columns.Add(dgc_title)
' Colonna Cantante
Dim dgc_cantante As New BoundColumn()
dgc_cantante.DataField = "Cantante"
dgc_cantante.HeaderText = "Cantante"
DataGrid1.Columns.Add(dgc_cantante)
' Colonna Album
Dim dgc_album As New BoundColumn()
dgc_album.DataField = "Album"
dgc_album.HeaderText = "Album"
DataGrid1.Columns.Add(dgc_album)
' Colonna Durata
Dim dgc_durata As New BoundColumn()
dgc_durata.DataField = "Durata"
dgc_durata.HeaderText = "Durata"
DataGrid1.Columns.Add(dgc_durata)
' Colonna KB
Dim dgc_KB As New BoundColumn()
dgc_KB.DataField = "KB"
dgc_KB.HeaderText = "KB"
DataGrid1.Columns.Add(dgc_KB)
' Colonna Preview
Dim dgc_preview As New BoundColumn()
dgc_preview.DataField = "Demo"
dgc_preview.HeaderText = "Preview"
DataGrid1.Columns.Add(dgc_preview)
If cn.State <> ConnectionState.Open Then cn.Open()
Dim Dati As New OleDbDataAdapter(strSQL, cn)
cn.Close()
DisabilitaBottoni()
Dati.Fill(ds)
DataGrid1.DataBind()
ds.Dispose()
Dati.Dispose()
