Un approccio è consentire gli aggiornamenti in un modo più Ajaxy, come discute Aristos. Questo è in genere considerato un approccio più intuitivo e offrirà sicuramente un'esperienza utente migliore, ma richiede familiarità con jQuery e JavaScript e le interazioni tra il client e il server sono un po' più complesse dal tuo punto di vista.
Se si desidera continuare a utilizzare il paradigma del controllo Web, considerare la creazione dei campi TemplateFields "Arrives At" e "Leaves At". In ItemTemplate potresti continuare a visualizzare il testo che concateni nel database, ma inseriresti un GridView in EditItemTemplate. Questo GridView può essere associato a un controllo origine dati (anche in EditItemTemplate) e configurato per supportare la modifica. Se stai vincolando i dati a livello di codice (ovvero, non). usando un controllo origine dati), dovrai associare i dati al GridView figlio ogni volta che la riga padre diventa modificabile. Questo può essere fatto in modo dichiarativo usando il markup in questo modo:
<asp:TemplateField ...>
<EditItemTemplate>
<asp:GridView runat="server" id="gvChild" DataSource='<%# SomeFunction() %>' ...>
...
</asp:GridView>
</EditItemTemplate>
</asp:TemplateField>
Qui, SomeFunction
sarebbe una funzione nella tua classe code-behind (in genere) che restituisce i dati da associare alla griglia.
In alternativa, puoi associare i dati al GridView figlio a livello di codice tramite RowDataBound
del GridView padre gestore di eventi. Vale a dire, dovresti controllare se hai a che fare con la riga in fase di modifica (ovvero, se e.Row.RowIndex = ParentGridViewID.EditIndex
). In tal caso, puoi fare riferimento a livello di codice al GridView figlio usando e.Row.FindControl("ChildGridViewID")
e quindi imposta il suo DataSource
proprietà e chiamarne il DataBind
metodo.
Quando un utente fa clic sul pulsante Modifica per la griglia principale, le celle "Arrivo a" e "Lascia a" verranno visualizzate come una griglia con pulsanti Modifica propri per modificare i singoli orari. In alternativa, puoi inserire il GridView modificabile figlio in ItemTemplate se desideri consentire agli utenti di modificare gli orari "Arrivo a" e "Lascia a" senza richiedere all'utente di scegliere prima di modificare il record padre.