Доступ к другой строке в Gridview RowDataBound? - PullRequest
1 голос
/ 30 ноября 2011

Есть ли способ получить доступ к элементам, которые находятся в другой строке, пока вы находитесь в событии RowDataBound?

public void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    // how to compare e.Row with row above or row below?
}

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Думаю, вы можете сделать одну вещь ...

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 (которая уже существует и может быть просмотрена).

Если вы 'хотя я делаю вещи в больших масштабах, я думаю, что весь этот цикл может стать громоздким.

1 голос
/ 30 ноября 2011

Из туманной памяти вы можете ссылаться на массив GridView из Row s и повторять их. Вы должны быть в состоянии получить позицию e и в любом случае получить доступ к строкам выше, не будучи уверенным в строках ниже, так как к тому времени они еще не привязаны к данным, если, конечно, это не повторный выстрел из одной строки.

...