protected void BindToGVProject()
    {
        con.Open();
        string sqlstr = "select * from Project";
        SqlDataAdapter sda = new SqlDataAdapter(sqlstr, con);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        gvProjectList.DataKeyNames = new string[] { "PK_Project" };
        gvProjectList.DataSource = ds;
        gvProjectList.DataBind();
        con.Close();
    }
    protected void gvProjectList_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvProjectList.EditIndex = e.NewEditIndex;
        BindToGVProject();
    }
    protected void gvProjectList_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        con.Open();
        string ProjectName =((TextBox)(gvProjectList.Rows[e.RowIndex].Cells[1].Controls[0])).Text;
        string sqlstr1 = "update Project set ProjectName='" + ProjectName + "' where PK_Project='" + gvProjectList.DataKeys[e.RowIndex].Value + "'";
        SqlCommand cmd1 = new SqlCommand(sqlstr1, con);
        cmd1.ExecuteNonQuery();
        con.Close();
        gvProjectList.EditIndex = -1;
        BindToGVProject();
    }
    protected void gvProjectList_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        gvProjectList.EditIndex = -1;
        BindToGVProject();
    }实现编辑更新的代码,以前做过好几次了,这次不知道为什么不能实现更新,也不报错,自己看了半天也找不到错误...

解决方案 »

  1.   

    看不出什么,gvProjectList_RowUpdating 事件触发了吗?
      

  2.   

    看下伲的 sqlstr1  是否正确:不仅仅是语法 而是逻辑   可以把它拷贝到 查询分析器中  执行下  如果在分析器中可以执行  那就没有问题  注意看你的语句 是否有逻辑问题
      

  3.   

    SqlCommand cmd1 = new SqlCommand(sqlstr1, con); 
    断点定在这句话上,看看sqlstr1
      

  4.   

    可能你SQL语句值没拿到!断点测试下!
      

  5.   

    怪问题,数据没有在GridView中改动吧..
      

  6.   


    问题解决了,是没有加ISPOSTBACK.
    但是为什么一定要加ISPOSTBACK呢,如果我没加的话,在更新后页面只不过是多绑定了一次,为什么会影响到更新呢?
      

  7.   

    1----在查询分析器中执行  sqlstr1  看看是否成功更新了一行   
    2----程序rebuild web site  重新执行 尝试更新数据 然后用isqlw 查询下是否 更新成功
    如果你程序中这部分有 try catch  可以先注释掉  跑起来  如果遇到异常  就察看下 有什么问题再反馈
      

  8.   

    protected void gvProjectList_RowUpdating(object sender, GridViewUpdateEventArgs e) 
        { 
            con.Open(); 
            string ProjectName =((TextBox)(gvProjectList.Rows[e.RowIndex].Cells[1].Controls[0])).Text; 
            string sqlstr1 = "update Project set ProjectName='" + ProjectName + "' where PK_Project='" + gvProjectList.DataKeys[e.RowIndex].Value + "'"; 
            SqlCommand cmd1 = new SqlCommand(sqlstr1, con); 
            cmd1.ExecuteNonQuery(); 
            con.Close(); 
            gvProjectList.EditIndex = -1; 
            BindToGVProject(); 
        } 查看你的BindToGVProject();如果是dataset做数据源绑定, 那你的dataset是否再你更新表以后更新了? 如果没有更新dataset 那就像amandag 所说  在页面中会覆盖掉你已经更新的数据, 但数据库中可能已经改好了。