Как я могу получить предыдущую строку в gridview rowdatabound?
Я хотел бы проверить данные предыдущей строки, если она равна --
если оно не равно --
тогда я бы включил кнопку в следующем ряду
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (DataBinder.Eval(e.Row.DataItem, "time_start").ToString() == "--")
{
Button btn = ((Button)e.Row.FindControl("Edit_Button"));
btn.Enabled = false;
}
}
}
2 ответа
Вы также можете сделать это, используя это GridView1.Rows[e.Row.RowIndex - 1]
,
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridViewRow prevrow = GridView1.Rows[e.Row.RowIndex - 1];
if( prevrow.RowType == DataControlRowType.DataRow)
{
// Your code for manipulating prevrow
}
if (DataBinder.Eval(e.Row.DataItem, "time_start").ToString() == "--")
{
Button btn = ((Button)e.Row.FindControl("Edit_Button"));
btn.Enabled = false;
}
}
}
Один из способов сделать это:
Создать поле
previousRow
в вашем классе, типаGridViewRow
,Инициализируйте это поле в null в
GridView.DataBinding
обработчик события. Это событие вызывается при запуске привязки данных до того, как сработает любое из событий RowDataBound.В вашем
GridView.RowDataBound
обработчик событий, выполняйте обработку (включая сравнение сpreviousRow
), затем установитеpreviousRow = e.Row
,