protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header || e.Row.RowType == DataControlRowType.EmptyDataRow )
        {
            
             foreach (GridViewRow row in this.GridView1.Rows)
            {
                HyperLink link = (HyperLink)row.Cells[4].Controls[0];
                string Member_order_ID = link.Text.Trim();
                if (e.Row.Cells[5].Text == "重复消费")
                {
                    HyperLink hyl = (HyperLink)e.Row.FindControl("EditID");
                    hyl.NavigateUrl = "OrderAgain.aspx?Member_Order_ID=" + Member_order_ID;
                }
                else
                {
                    HyperLink hyl = (HyperLink)e.Row.FindControl("EditID");
                    hyl.NavigateUrl = "RegisterQiChuMember.aspx?Member_Order_ID=" + Member_order_ID;
                }
           }
        } 
    }------------------------------------------------为什么我这里Member_order_ID取到的值都是上一行的,而且第一行是没有值得

解决方案 »

  1.   

    if (e.Row.RowType == DataControlRowType.DataRow )
      

  2.   

    改为:
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header || e.Row.RowType == DataControlRowType.EmptyDataRow )
            {
                
                                 HyperLink link = (HyperLink)row.Cells[4].Controls[0];
                    string Member_order_ID = link.Text.Trim();
                    if (e.Row.Cells[5].Text == "重复消费")
                    {
                        HyperLink hyl = (HyperLink)e.Row.FindControl("EditID");
                        hyl.NavigateUrl = "OrderAgain.aspx?Member_Order_ID=" + Member_order_ID;
                    }
                    else
                    {
                        HyperLink hyl = (HyperLink)e.Row.FindControl("EditID");
                        hyl.NavigateUrl = "RegisterQiChuMember.aspx?Member_Order_ID=" + Member_order_ID;
                    }
               
            } 
        }
      

  3.   

    GridView1的RowDataBound事件,每一行绑定时都会触发一次,它本身就是一个“遍历”,在里面再加上foreach循环,当然就不对了
      

  4.   

    Eddie兄:
        HyperLink link = (HyperLink)row.Cells[4].Controls[0];
    这句好像就不对了吧,你把我的foreach去除了,那么row就不存在了,那这里我该用什么替代
      

  5.   

    e.Row.RowType == DataControlRowType.Header
    去掉
      

  6.   

    e.Row.RowType == DataControlRowType.Header
    去掉
    ------------------------------
    还是不行的,每一页都是第一行没有值,后一行的值都是前一行的
      

  7.   


        HyperLink link = (HyperLink)e.Row.Cells[4].Controls[0];
      

  8.   


     HyperLink link = (HyperLink)e.Row.Cells[4].Controls[0];----这行报错“Specified argument was out of the range of valid values.
    Parameter name: index “
      

  9.   

    if (e.Row.RowType == DataControlRowType.DataRow )

    HyperLink link = (HyperLink) GridView1.Rows[e.Row.RowIndex].FindControl("EditID");
    }
    最好把DataKeyNames="ID"设个关键字作为索引.
    PagerSettings-Visible=false;