В вашем вопросе недостаточно подробностей, и ответ зависит от того, какой именно состав "деталей" может быть показан в каждой строке.
Однако я бы сделал следующее, используя jquery с обработчиком ajax asp.net, чтобы получить данные (по требованию) и вставить их в новую строку gridview.
При событии click, при котором ваша строка переходит в «выбранный» режим, я запускаю функцию jquery.
Эта функция jquery будет запускать попадание ajax в GrabRowDetails.aspx.
GrabRowDetails.aspx будет принимать входные данные в строке запроса.
На основании этого ввода он будет запрашивать базу данных.
В конечном итоге GrowRowDetails.aspx должен упаковать соответствующие данные в JSON, который будет возвращен клиенту.
Response.ContentType = "application/json"
Response.Write(SB.ToString()) 'emits the JSON
Наконец, ваш обработчик ajax-success позаботится о создании новой строки таблицы и вставке соответствующих данных в эту новую строку.
Как он узнает, куда поместить новую строку? Обработчик щелчка, упомянутый вверху, должен передавать ссылку на элемент управления, инициирующий событие щелчка.
Используя эту ссылку, вы можете использовать функцию ближайший . this.nearest("tr").after(..new_row_with_max_colspan_cell..)
.
Функция после вставит элемент после выбранного элемента (ов). Итак, вам просто нужно вставить новый TR с одним TD с максимальным colspan. Затем вы можете работать внутри этой области.
Когда дело доходит до подобных вещей, мне больше повезло, если я использую raw jquery, а не элемент управления ASP.NET.
Примечания
- .ashx является более производительным, чем .aspx для обработки ajax-запросов, но я столкнулся с некоторыми проблемами отладки с обработчиками http. Итак, я использую полноценный .aspx. Если бы скорость была проблемой, я бы определенно использовал Ashx.
- Ваша функция jquery также должна удалять все ранее открытые строки сведений. Это можно сделать, установив определенный класс css для строк сведений, например
details
, а затем с помощью функции remove избавиться от любых сохраняющихся строк сведений.