Một cách tiếp cận là cho phép cập nhật theo cách Ajaxy hơn, như Aristos đã thảo luận. Đây thường được coi là một cách tiếp cận thân thiện với người dùng hơn và chắc chắn sẽ mang lại trải nghiệm người dùng tốt hơn, nhưng yêu cầu sự quen thuộc với jQuery và JavaScript và các tương tác giữa máy khách và máy chủ phức tạp hơn một chút theo quan điểm của bạn.
Nếu bạn muốn tiếp tục sử dụng mô hình điều khiển Web, hãy xem xét tạo các trường "Đến lúc" và "Rời khỏi" TemplateFields. Trong ItemTemplate, bạn có thể tiếp tục hiển thị văn bản bạn nối tại cơ sở dữ liệu, nhưng bạn phải đặt GridView trong EditItemTemplate. GridView này có thể được liên kết với một điều khiển nguồn dữ liệu (cũng trong EditItemTemplate) và được định cấu hình để hỗ trợ chỉnh sửa. Nếu bạn đang liên kết dữ liệu theo chương trình (tức là bạn không sử dụng điều khiển nguồn dữ liệu) thì bạn sẽ cần liên kết dữ liệu với GridView con bất cứ khi nào hàng mẹ có thể chỉnh sửa được. Điều này có thể được thực hiện một cách khai báo bằng cách sử dụng đánh dấu như sau:
<asp:TemplateField ...>
<EditItemTemplate>
<asp:GridView runat="server" id="gvChild" DataSource='<%# SomeFunction() %>' ...>
...
</asp:GridView>
</EditItemTemplate>
</asp:TemplateField>
Đây, SomeFunction
sẽ là một hàm trong lớp mã phía sau của bạn (thông thường) trả về dữ liệu để liên kết với lưới.
Ngoài ra, bạn có thể liên kết dữ liệu với GridView con theo lập trình thông qua RowDataBound
của GridView mẹ xử lý sự kiện. Cụ thể, bạn sẽ kiểm tra xem bạn có đang xử lý hàng đang được chỉnh sửa hay không (nghĩa là nếu e.Row.RowIndex = ParentGridViewID.EditIndex
). Nếu vậy, bạn có thể lập trình tham chiếu GridView con bằng cách sử dụng e.Row.FindControl("ChildGridViewID")
và sau đó đặt DataSource
của nó và gọi thuộc tính DataBind
của nó phương pháp.
Khi người dùng nhấp vào nút Chỉnh sửa cho lưới chính, các ô "Đến" và "Rời khỏi" sẽ hiển thị dưới dạng lưới với các nút Chỉnh sửa của riêng họ để sửa đổi thời gian riêng lẻ. Ngoài ra, bạn có thể đặt GridView con có thể chỉnh sửa trong ItemTemplate nếu bạn muốn cho phép người dùng chỉnh sửa thời điểm "Đến" và "Rời khỏi" mà không yêu cầu người dùng trước tiên phải chọn chỉnh sửa bản ghi gốc.