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