Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Modifica complessa su una visualizzazione griglia in C#

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.