Как я могу получить предыдущую строку в 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,

Другие вопросы по тегам