如何获取gridview rowdatabound中的上一行?

时间:2014-10-17 04:35:35

标签: asp.net aspxgridview 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 个答案:

答案 0 :(得分:1)

你也可以使用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;
        }
    }
}

答案 1 :(得分:0)

一种方法是:

  • 在班级中创建previousRow类型的字段GridViewRow

  • GridView.DataBinding事件处理程序中将此字段初始化为null。在任何RowDataBound事件触发之前,数据绑定开始时会触发此事件。

  • GridView.RowDataBound事件处理程序中,进行处理(包括与previousRow进行比较),然后设置previousRow = e.Row