Один из подходов состоит в том, чтобы позволить обновлениям более Ajaxy, как говорит Аристос.Обычно это считается более удобным для пользователя подходом и, безусловно, предлагает более приятное взаимодействие с пользователем, но требует знакомства с jQuery и JavaScript, а взаимодействие между клиентом и сервером с вашей точки зрения немного сложнее.
ЕслиЕсли вы хотите продолжать использовать парадигму веб-управления, рассмотрите возможность заполнения полей TemplateFields для полей «Прибытие в» и «Листья в».В ItemTemplate вы могли бы продолжать отображать текст, который вы объединяете в базе данных, но вы бы поместили GridView в EditItemTemplate.Этот GridView может быть связан с элементом управления источником данных (также в EditItemTemplate) и настроен для поддержки редактирования.Если вы программно связываете данные (т. Е. Вы не используете элемент управления источником данных), вам нужно будет привязать данные к дочернему GridView, когда родительская строка станет редактируемой.Это можно сделать декларативно, используя разметку следующим образом:
<asp:TemplateField ...>
<EditItemTemplate>
<asp:GridView runat="server" id="gvChild" DataSource='<%# SomeFunction() %>' ...>
...
</asp:GridView>
</EditItemTemplate>
</asp:TemplateField>
Здесь SomeFunction
будет функцией в вашем классе code-behind (обычно), которая возвращает данные для привязки к сетке.
В качестве альтернативы, вы можете привязать данные к дочернему GridView программно через обработчик событий RowDataBound
родительского GridView.А именно, вы бы проверили, имеете ли вы дело с редактируемой строкой (то есть, если e.Row.RowIndex = ParentGridViewID.EditIndex
).Если это так, вы можете программно ссылаться на дочерний GridView, используя e.Row.FindControl("ChildGridViewID")
, а затем установить его свойство DataSource
и вызвать его метод DataBind
.
Когда пользователь нажимает кнопку «Изменить» для родительской сетки, «Прибытие»В ячейках «» и «Выйти в» будут отображаться сетки с собственными кнопками «Правка» для изменения времени.В качестве альтернативы, вы можете поместить дочерний редактируемый GridView в ItemTemplate, если хотите, чтобы пользователи редактировали время «Прибытие» и «Покинуть в», не требуя, чтобы пользователь сначала выбрал редактирование родительской записи.