sql >> Databasteknik >  >> RDS >> Sqlserver

Komplex redigering på en gridview i C#

Ett tillvägagångssätt är att tillåta uppdateringarna på ett mer Ajaxy sätt, som Aristos diskuterar. Detta anses vanligtvis vara ett mer användarvänligt tillvägagångssätt och kommer säkerligen att erbjuda en trevligare användarupplevelse, men kräver förtrogenhet med jQuery och JavaScript och interaktionen mellan klienten och servern är lite mer komplex ur ditt perspektiv.

Om du vill fortsätta att använda webbkontrollparadigmet, överväg att göra fälten "Arrives At" och "Leaves At" till TemplateFields. I ItemTemplate kan du fortsätta att visa texten du sammanfogar i databasen, men du skulle lägga en GridView i EditItemTemplate. Denna GridView kan bindas till en datakällaskontroll (även i EditItemTemplate) och konfigureras för att stödja redigering. Om du programmässigt binder data (dvs. du är inte med hjälp av en datakällakontroll) måste du binda data till den underordnade GridView närhelst den överordnade raden blir redigerbar. Detta kan göras deklarativt med hjälp av uppmärkning så här:

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

Här, SomeFunction skulle vara en funktion i din code-behind-klass (vanligtvis) som returnerar data för att binda till rutnätet.

Alternativt kan du binda data till det underordnade GridView programmatiskt via den överordnade GridViews RowDataBound händelsehanterare. Du skulle nämligen kontrollera om du har att göra med raden som redigeras (det vill säga om e.Row.RowIndex = ParentGridViewID.EditIndex ). Om så är fallet kan du programmässigt referera till det underordnade GridView med e.Row.FindControl("ChildGridViewID") och ställ sedan in dess DataSource egenskapen och anropa dess DataBind metod.

När en användare klickar på knappen Redigera för det överordnade rutnätet kommer cellerna "Anländer till" och "Lämna vid" att visas som ett rutnät med egna Redigera-knappar för att ändra de individuella tiderna. Alternativt kan du lägga in den underordnade redigerbara GridView i ItemTemplate om du vill låta användarna redigera tidpunkterna "Arrive At" och "Leave At" utan att kräva att användaren först väljer att redigera den överordnade posten.



  1. Sliddäck och prover från #SQLintersection

  2. Hur laddar jag Individual Div utan att ladda hela sidan och visa laddningsstatus?

  3. Avancerad sökning med avstånd med NHibernate och SQL Server Geography

  4. När är det bättre att lagra flaggor som en bitmask istället för att använda en associativ tabell?