Ciao a tutti,
sto provando a migrare dal vecchio DataGrid al nuovo GridView di ASP.NET 2.0.
Mi è successa una cosa strana e tuttora non ho trovato una soluzione definitiva.

Ho una WebForm con una GridView:
codice:
<asp:GridView ID="grvEsempio" runat="server">
  <Columns>
   <asp:TemplateField>
     <ItemTemplate>
        <asp:Button ID="cmdPippo" runat="server" CausesValidation="false" CommandName="Pippo" Text="Pippo" CommandArgument='<%# Eval("field_1") %>' />
      </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>
Le colonne del datagrid le aggiungo dinamicamente a runtime sul Page_Load:
codice:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  If (Not Page.IsPostBack) Then
    bindGrid()
  End If
End Sub

Private Sub bindGrid()
  dim dt as DataTable

  ' Riempio il datatable
  dt = ...

  ' Aggiungo le colonne al GridView
  For Each dc As DataColumn In dt.Columns
    Dim l_oCol As New BoundField
    l_oCol.DataField = dc.ColumnName
    l_oCol.HeaderText = dc.ColumnName
    grvDynamic.Columns.Add(l_oCol)
  Next

  grvEsempio.DataSource = dt
  grvEsempio.DataBind()
End Sub
Ho un gestore dell'evento RowCommand che funziona perfettamente:
codice:
Private Sub grvEsempio_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grvEsempio.RowCommand
  ' Riempio una label con il CommandName e il CommandArgument
  Select Case (e.CommandName)
    Case "Pippo"
      ' Faccio le mie operazioni
      ...
  End Select
End Sub
Se stranamente aggiungo le colonne prima della colonna con il pulsante anziché dopo con questo codice:
codice:
Private Sub bindGrid()
  dim dt as DataTable

  ' Riempio il datatable
  dt = ...

  ' Aggiungo le colonne al GridView
  Dim l_iIdx As Integer = 0
  For Each dc As DataColumn In dt.Columns
    Dim l_oCol As New BoundField
    l_oCol.DataField = dc.ColumnName
    l_oCol.HeaderText = dc.ColumnName
    grvDynamic.Columns.Insert(l_iIdx, l_oCol)
    l_iIdx += 1
  Next

  grvEsempio.DataSource = dt
  grvEsempio.DataBind()
End Sub
L'evento RowCommand non scatta più.

A voi vi è mai capitato? Come posso risolvere?

Grazie a tutti.