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

Kompleks redigering på en gridview i C#

En tilgang er at tillade opdateringerne på en mere Ajaxy måde, som Aristos diskuterer. Dette betragtes typisk som en mere brugervenlig tilgang og vil helt sikkert give en bedre brugeroplevelse, men kræver kendskab til jQuery og JavaScript, og interaktionerne mellem klienten og serveren er lidt mere komplekse set fra dit perspektiv.

Hvis du vil fortsætte med at bruge webkontrolparadigmet, kan du overveje at lave "Arrives At" og "Leaves At" felterne TemplateFields. I ItemTemplate kunne du fortsætte med at vise den tekst, du sammenkæder i databasen, men du ville sætte en GridView i EditItemTemplate. Denne GridView kunne være bundet til en datakildekontrol (også i EditItemTemplate) og konfigureret til at understøtte redigering. Hvis du er programmatisk bindende data (dvs. du er ikke). ved at bruge en datakildekontrol), så bliver du nødt til at binde dataene til det underordnede GridView, når den overordnede række kan redigeres. Dette kan gøres deklarativt ved hjælp af markup som sådan:

<asp:TemplateField ...>
    <EditItemTemplate>
        <asp:GridView runat="server" id="gvChild" DataSource='<%# SomeFunction() %>' ...>
           ...
        </asp:GridView>
    </EditItemTemplate>
</asp:TemplateField>

Her, SomeFunction ville være en funktion i din code-behind-klasse (typisk), der returnerer dataene for at binde til gitteret.

Alternativt kan du binde dataene til det underordnede GridView programmatisk via det overordnede GridViews RowDataBound hændelseshandler. Du vil nemlig kontrollere, om du har at gøre med den række, der redigeres (det vil sige, hvis e.Row.RowIndex = ParentGridViewID.EditIndex ). Hvis det er tilfældet, kan du programmæssigt referere til det underordnede GridView ved hjælp af e.Row.FindControl("ChildGridViewID") og indstil derefter dens DataSource egenskab og kalder dens DataBind metode.

Når en bruger klikker på knappen Rediger for det overordnede gitter, vil cellerne "Ankomme til" og "Forlad ved" blive vist som et gitter med deres egne Rediger-knapper for at ændre de individuelle tidspunkter. Alternativt kan du lægge det underordnede redigerbare GridView i ItemTemplate, hvis du vil lade brugerne redigere tidspunkterne "Ankomst til" og "Forlad kl" uden at kræve, at brugeren først skal vælge at redigere den overordnede post.



  1. Hvordan cbrt() virker i PostgreSQL

  2. MySQL - Konverter MM/DD/ÅÅ til Unix tidsstempel

  3. Hvorfor kræver en rekursiv CTE i Transact-SQL en UNION ALL og ikke en UNION?

  4. Højere forespørgselsresultat med DISTINCT søgeordet?