Jednym z podejść jest umożliwienie aktualizacji w sposób bardziej ajaxy, jak omawia Aristos. Jest to zwykle uważane za bardziej przyjazne dla użytkownika podejście i z pewnością zapewnia przyjemniejsze wrażenia użytkownika, ale wymaga znajomości jQuery i JavaScript, a interakcje między klientem a serwerem są z Twojej perspektywy nieco bardziej złożone.
Jeśli chcesz nadal korzystać z paradygmatu kontroli sieci Web, rozważ utworzenie pól TemplateFields „Przybywa o” i „Pozostawia o”. W ItemTemplate można nadal wyświetlać tekst, który łączysz w bazie danych, ale umieścisz GridView w EditItemTemplate. Ten GridView może być powiązany z kontrolką źródła danych (również w EditItemTemplate) i skonfigurowany do obsługi edycji. Jeśli programowo wiążesz dane (tzn. nie) przy użyciu kontrolki źródła danych), musisz powiązać dane z podrzędnym GridView, gdy wiersz nadrzędny stanie się edytowalny. Można to zrobić deklaratywnie za pomocą znaczników w następujący sposób:
<asp:TemplateField ...>
<EditItemTemplate>
<asp:GridView runat="server" id="gvChild" DataSource='<%# SomeFunction() %>' ...>
...
</asp:GridView>
</EditItemTemplate>
</asp:TemplateField>
Tutaj SomeFunction
byłaby funkcją w twojej klasie związanej z kodem (zazwyczaj), która zwraca dane do powiązania z siatką.
Alternatywnie można powiązać dane z podrzędnym GridView programowo za pomocą RowDataBound
nadrzędnego GridView obsługa zdarzeń. Mianowicie, możesz sprawdzić, czy masz do czynienia z edytowanym wierszem (to znaczy, czy e.Row.RowIndex = ParentGridViewID.EditIndex
). Jeśli tak, możesz programowo odwołać się do podrzędnego GridView za pomocą e.Row.FindControl("ChildGridViewID")
a następnie ustaw jego DataSource
i wywołaj jej DataBind
metoda.
Gdy użytkownik kliknie przycisk Edytuj dla siatki nadrzędnej, komórki „Przyjazd do” i „Wyjdź o” będą wyświetlane jako siatka z własnymi przyciskami Edytuj do modyfikowania poszczególnych czasów. Alternatywnie możesz umieścić edytowalny widok GridView podrzędny w ItemTemplate, jeśli chcesz, aby użytkownicy mogli edytować czasy „Przyjazd o” i „Wyjście o” bez wymagania, aby użytkownik najpierw wybrał edycję rekordu nadrzędnego.