Думаю, вы можете сделать одну вещь ...
foreach (GridViewRow gvrow in GridView1)
{
//loop through gridview's rows and find the row you're looking for
}
Я считаю, что RowDataBound добавляет строки в том же порядке, в котором они содержатся в источнике данных, поэтому, если в вашем файле 100 записейDataTable, и вы связываете этот DataTable с GridView, RowDataBound вызывается 100 раз для каждой строки в порядке, в котором они существуют в DataTable.Таким образом, вы упомянули использование RowDataBound для сравнения e.Row со строкой выше или строкой ниже ... но если они идут последовательно, ниже строки нет.Это то, о чем я раньше не задумывался, но я вспоминаю, что при тестировании с точками останова RowDataBound работает таким образом.
Если вы не можете заставить что-то подобное работать, и вам нужно, чтобы это произошлоесли это не красиво и не дает лучших ответов, вы можете сохранить копию вашей DataTable с привязкой к данным или любого другого источника данных в переменную ViewState или Session, например ViewState ["myDataTable"].Затем вы можете извлечь событие DataTable on RowDataBound и посмотреть строки выше и ниже строки, представленной e.Row (при условии, что у вас есть какой-то курсор, такой как ID, для идентификации строк).Делая это, вы МОЖЕТЕ посмотреть на следующую строку, которая будет добавлена в GridView с помощью RowDataBound, потому что это будет следующая строка в DataTable (которая уже существует и может быть просмотрена).
Если вы 'хотя я делаю вещи в больших масштабах, я думаю, что весь этот цикл может стать громоздким.