protected void GridView1_RowUpdating1(object sender, GridViewUpdateEventArgs e)
    {
        string ID = Convert.ToString(this.GridView1.DataKeys[e.RowIndex].Value);
        string XM = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
        string XB = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
        DateTime SR = Convert.ToDateTime(((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim());
        string SR2 = string.Format("{0:d}", SR);
        string SFZH = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim();
        string SR1 = string.Format("{0:M}", SR);
        DBOperation.ExecuteNonQuery("update Users set U_name=@name ,U_birth=@birth ,ID_Card=@Card ,U_sex=@sex , U_birth1=@birth1 where U_id=@id", new SqlParameter("name", XM), new SqlParameter("birth", SR2), new SqlParameter("Card", SFZH), new SqlParameter("sex", XB), new SqlParameter("birth1",SR1),new SqlParameter("id",ID));
        this.GridView1.EditIndex = -1;
        ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('更新成功!')</script>");
        this.bind();
    }单击更新时ID 、XM 等数据都是修改以前滴,修改过的数据不能更新。跪求大虾给个指点

解决方案 »

  1.   

     ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('更新成功!')</script>");
    this.GridView1.EditIndex = -1;
    this.bind();打个断点第二次点击按钮的时候 触发这个了吗?
      

  2.   

    this.GridView1.DataKeys[e.RowIndex].Value本来就是string类型,还执行那个什么Convert.ToString干什么呢?如果你不是明知道里边是个string,而是想不管什么对象反正糊弄个string类型的数值出来再说,那么后边的代码就不用测了。那样编程貌似程序往后执行了,可是你习惯于隐藏bug拖到后边的代码、别人的代码再表现出来。
      

  3.   

    上面代码少贴了两句
    protected void GridView1_RowUpdating1(object sender, GridViewUpdateEventArgs e)
       {   string ID = Convert.ToString(this.GridView1.DataKeys[e.RowIndex].Value);
       string XM = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
       string XB = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
       DateTime SR = Convert.ToDateTime(((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim());
       string SR1 = string.Format("{0:d}", SR);
       string SFZH = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
       newuser.U_id = ID;
       newuser.U_name = XM;
       newuser.U_sex = XB;
       newuser.U_birth = SR1;
       newuser.ID_Card = SFZH;
       if (userbll.Upuser(newuser))
       {
       this.GridView1.EditIndex = -1;
       ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('更新成功!')</script>");
       this.bind();
       }
       else
       {
       this.GridView1.EditIndex = -1;
       ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('更新失败!')</script>");
       this.bind();
       }
    点击更新数据库中还是原来滴数据,我设断点看过在最开始几行取数据滴时候就没能取到我修改过滴数据