Un enfoque es permitir las actualizaciones de una manera más Ajaxy, como comenta Aristos. Esto generalmente se considera un enfoque más fácil de usar y sin duda ofrecerá una experiencia de usuario más agradable, pero requiere familiaridad con jQuery y JavaScript y las interacciones entre el cliente y el servidor son un poco más complejas desde su perspectiva.
Si desea continuar usando el paradigma de control web, considere convertir los campos "Llega a" y "Sale a" en TemplateFields. En ItemTemplate, podría continuar mostrando el texto que concatena en la base de datos, pero colocaría un GridView en EditItemTemplate. Este GridView podría vincularse a un control de origen de datos (también en EditItemTemplate) y configurarse para admitir la edición. Si vincula datos mediante programación (es decir, no usando un control de origen de datos), entonces deberá vincular los datos al GridView secundario cada vez que la fila principal sea editable. Esto se puede hacer de forma declarativa usando marcado como este:
<asp:TemplateField ...>
<EditItemTemplate>
<asp:GridView runat="server" id="gvChild" DataSource='<%# SomeFunction() %>' ...>
...
</asp:GridView>
</EditItemTemplate>
</asp:TemplateField>
Aquí, SomeFunction
sería una función en su clase de código subyacente (normalmente) que devuelve los datos para vincularlos a la cuadrícula.
Alternativamente, puede vincular los datos al GridView secundario mediante programación a través de RowDataBound
del GridView principal. controlador de eventos. Es decir, verificaría si está tratando con la fila que se está editando (es decir, si e.Row.RowIndex = ParentGridViewID.EditIndex
). Si es así, podría hacer referencia mediante programación al GridView secundario usando e.Row.FindControl("ChildGridViewID")
y luego establezca su DataSource
propiedad y llame a su DataBind
método.
Cuando un usuario hace clic en el botón Editar para la cuadrícula principal, las celdas "Llegar a" y "Salir a" se mostrarán como una cuadrícula con sus propios botones de edición para modificar las horas individuales. Alternativamente, puede colocar el GridView secundario editable en ItemTemplate si desea permitir que los usuarios editen las horas de "Llegada a las" y "Salida a las" sin que el usuario tenga que elegir primero editar el registro principal.