protected void btnCommit_Click(object sender, EventArgs e)
    {
        string sql = "Update [User] Set UserTrueName=@userTrueName,Sex=@sex,Age=@age,Marry=@marry,IDcard=@idCard,Mobile=@mobile,QQ=@qq,[E-Mail]=@email Where UserName='" + Request.Cookies["cookieUserName"].Value.Trim() + "'";
        string connStr = ConfigurationManager.ConnectionStrings["dbcon"].ConnectionString;
        SqlConnection conn = new SqlConnection(connStr);
        conn.Open();
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.Add("@userTrueName", SqlDbType.Char, 20);
        cmd.Parameters.Add("@sex", SqlDbType.Char, 4);
        cmd.Parameters.Add("@age", SqlDbType.Int, 4);
        cmd.Parameters.Add("@marry", SqlDbType.Char, 8);
        cmd.Parameters.Add("@idCard", SqlDbType.Char, 18);
        cmd.Parameters.Add("@mobile", SqlDbType.Char, 16);
        cmd.Parameters.Add("@qq", SqlDbType.Real, 12);
        cmd.Parameters.Add("@email", SqlDbType.Char, 40);
        if (tbtruename.Text != null && tbtruename.Text != string.Empty)
        {
            cmd.Parameters["@userTrueName"].Value = tbtruename.Text;
        }
        else
        {
            cmd.Parameters["@userTrueName"].Value = "";
        }
        cmd.Parameters["@sex"].Value = rblistsex.Text;
        if (tbage.Text != null && tbage.Text != string.Empty)
        {
            cmd.Parameters["@age"].Value = Int32.Parse(tbage.Text);
        }
        else
        {
            cmd.Parameters["@age"].Value = 0;
        }
        cmd.Parameters["@marry"].Value = ddlistmar.Text;
        if (tbidcard.Text != null && tbidcard.Text != string.Empty)
        {
            cmd.Parameters["@idCard"].Value = tbidcard.Text;
        }
        else
        {
            cmd.Parameters["@idCard"].Value = 0;
        }
        if (tbmobile.Text != null && tbmobile.Text != string.Empty)
        {
            cmd.Parameters["@mobile"].Value = tbmobile.Text;
        }
        else
        {
            cmd.Parameters["@mobile"].Value = "";
        }
        if (tbqq.Text != null && tbqq.Text != string.Empty)
        {
            cmd.Parameters["@qq"].Value = Decimal.Parse(tbqq.Text);
        }
        else
        {
            cmd.Parameters["@qq"].Value = 0;
        }
        if (tbemail.Text != null && tbemail.Text != string.Empty)
        {
            cmd.Parameters["@email"].Value = tbemail.Text;
        }
        else
        {
            cmd.Parameters["@email"].Value = "";
        }
        cmd.ExecuteNonQuery();
        Response.Write("<script language='javascript'>alert('资料更新成功!')</script>");
    }

解决方案 »

  1.   

    什么错误,
    一般来说,如果你不能修改,是因为你下面的原因:
    if(!IsPostbaack)
    {
         BindData();//初始化数据,千万不要把这个放在外面,否则的话,你修改时数据又会变成原来的
    }
      

  2.   

    声明一下:我的代码没有错误,只是数据不能被修改,附上page-load的代码:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Cookies["cookieUserName"] == null)
            {
                Response.Write("未登录用户,请<a href='Default.aspx' target='_parent'>登录</a>");
                Response.End();
            }
            else
            {
                labUserName.Text = Request.Cookies["cookieUserName"].Value;
                string sql = "Select * From [User] Where UserName='" + Request.Cookies["cookieUserName"].Value + "'";
                string connStr = ConfigurationManager.ConnectionStrings["dbcon"].ConnectionString;
                SqlConnection conn = new SqlConnection(connStr);
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = CommandType.Text;
                SqlDataReader reader = cmd.ExecuteReader();
                reader.Read();
                try
                {
                    tbtruename.Text = reader["UserTrueName"].ToString();
                    rblistsex.Text = reader["Sex"].ToString().Trim();
                    tbage.Text = reader["Age"].ToString();
                    ddlistmar.Text = reader["Marry"].ToString().Trim();
                    tbidcard.Text = reader["IDcard"].ToString().Trim();
                    tbmobile.Text = reader["Mobile"].ToString().Trim();
                    tbqq.Text = reader["QQ"].ToString().Trim();
                    tbemail.Text = reader["E-Mail"].ToString().Trim();
                }
                catch
                {
                    tbtruename.Text = null;
                    rblistsex.Text = "男";
                    tbage.Text = null;
                    ddlistmar.Text = "未婚";
                    tbidcard.Text = null;
                    tbmobile.Text = null;
                    tbqq.Text = null;
                    tbemail.Text = null;
                }
                finally
                {
                    conn.Close();
                }
            }
        }
      

  3.   

    应该不是if(!IsPostback)的问题
    楼主是button_Click事件,不知道楼主运行后是什么情况呢?
    还有,你的conn.Close()呢?
      

  4.   

    把代码用 TRY CATCH括起来
    断点跟下就知道了
      

  5.   

    ok,问题解决,应该是Page_Init事件,不是Page_Load