J'essaie de définir immédiatement une ligne en mode Édition après sa création. Cependant, mon GridViewRow a une mauvaise DataItemIndex et DataItem nulle ...Pourquoi mon GridViewRow.DataItemIndex est-il incorrect et DataItem nul?
Voici une idée générale de ce que fait mon code: (pseudo code VB)
Protected Sub gvItems_RowCommand(....)
if (e.CommandName = 'New')
Begin
// create new empty and add it to my data table
m_dtItems.Rows.Add(m_dtItems.NewRow()) // m_dtItems is a DataTable
// rebind the gridview to the modified data table
gvItems.DataSource = m_dtItems
gvItems.DataBind()
// loop through grid view to find the row we just inserted
Dim newRowDataItemIndex As Integer = m_dtItems.Rows.IndexOf(dRow)
For each row in gvItems.Rows
if (row.DataItemIndex = newRowDataItemIndex)
gvItems.EditIndex = row.RowIndex
// rebind the grid so the edit index takes effect
gvItems.DataSource = m_dtItems
gvItems.DataBind()
End
End Sub
Le problème est que GridViewRow.DataItemIndex est pas correct. Il semble être égal à RowIndex. En outre, mon GridViewRow.DataItem est null sauf à l'intérieur de l'événement GridViewRow_RowDataBound.
Je n'utilise pas la pagination ou le tri, ce qui, je le sais, cause des problèmes.
Qu'est-ce que je fais mal?