首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

菜鸟有关问题

2012-04-21 
初学者问题.我做了一个修改用户资料的页面,里面是给用户修改个人信息的. 我全都用了textbox.在pageload的

初学者问题.
我做了一个修改用户资料的页面, 里面是给用户修改个人信息的. 我全都用了textbox.在pageload的时候.用sqldataread把全部数据库内容放到了每个textbox中,
.但是问题也出在了这里.我之后在修改textbox里的text..怎么提交..内容都是原来的...
我发现似乎不该把取数据放在pageload里..但是我不知道该怎么做好..初学asp.net.

C# code
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.SqlClient;using System.Data.Sql;public partial class UserInfoChange : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        if (!this.IsPostBack)        {            if (Session["NAME_user"] == null || Session["ROLE_user"] == null)            {                Response.Redirect("~/UserLogin.aspx");            }            else            {                this.Label3.Text = Convert.ToString(Session["NAME_user"]);            }        }                string strCon = "Data Source=(local);Database=Meet;Integrated Security=SSPI";        SqlConnection sqlcon = new SqlConnection(strCon);        string sql = "select * from [user] where NAME_user='" + this.Label3.Text + "'";        SqlCommand cmd = new SqlCommand(sql, sqlcon);        sqlcon.Open();        SqlDataReader sdr = cmd.ExecuteReader();               while (sdr.Read())        {            this.MMTextBox.Text = sdr["CODE_user"].ToString();            this.XBTextBox.Text = sdr["SEX_user"].ToString();            this.XMTextBox.Text = sdr["RealName_user"].ToString();            this.SRTextBox.Text = sdr["BIRTH_user"].ToString();            this.UXTextBox.Text = sdr["EMAIL_user"].ToString();            this.GSTextBox.Text = sdr["COMPANY_user"].ToString();        }        sqlcon.Close();    }    protected void Button1_Click(object sender, EventArgs e)    {        if (XMMTextBox.Text != "")        {            SqlConnection sqlcon;            SqlCommand sqlcom;            string strCon = "Data Source=(local);Database=Meet;Integrated Security=SSPI";            sqlcon = new SqlConnection(strCon);            string sqlstr = "update [user] set CODE_user='" + this.XMMTextBox.Text.ToString().Trim() +                "',SEX_user='" + this.XBTextBox.Text.ToString().Trim() +                "',RealName_user='" + this.XMTextBox.Text.ToString().Trim() +                "',BIRTH_user='" + this.SRTextBox.Text.ToString().Trim() +                "',EMAIL_user='" + this.UXTextBox.Text.ToString().Trim() +                "',COMPANY_user='" + this.GSTextBox.Text.ToString().Trim() + "' where NAME_user='" + this.Label3.Text + "'";            sqlcom = new SqlCommand(sqlstr, sqlcon);            sqlcon.Open();            sqlcom.ExecuteNonQuery();            sqlcon.Close();            Response.Write("<script>alert('修改成功!请重新登录');</script>");            Response.Write("<script language=javascript>window.parent.location.href='UserLogin.aspx'</script>");        }        else        {            SqlConnection sqlcon;            SqlCommand sqlcom;            string strCon = "Data Source=(local);Database=Meet;Integrated Security=SSPI";            sqlcon = new SqlConnection(strCon);            string sqlstr = "update [user] set CODE_user='" + this.MMTextBox.Text.ToString().Trim() +                "',SEX_user='" + this.XBTextBox.Text.ToString().Trim() +                "',RealName_user='" + this.XMTextBox.Text.ToString().Trim() +                "',BIRTH_user='" + this.SRTextBox.Text.ToString().Trim() +                "',EMAIL_user='" + this.UXTextBox.Text.ToString().Trim() +                "',COMPANY_user='" + this.GSTextBox.Text.ToString().Trim() + "' where NAME_user='" + this.Label3.Text + "'";            sqlcom = new SqlCommand(sqlstr, sqlcon);            sqlcon.Open();            sqlcom.ExecuteNonQuery();            sqlcon.Close();            Response.Write("<script>alert('修改成功!');</script>");        }    }} 


这是后台代码..

[解决办法]
把读取部分放到非Post里面

if (!this.IsPostBack)
{
//读取。
}

click button发生的时候,会先调用Page_load,再调用 Button1_Click。这叫做postback.
因此要在Page_load里判断是不是Postback,如果是就不要从数据库里读取了。
[解决办法]
放到onprerender事件中,pageload在页面事件出发之前执行的,所以你button事件还没碰到页面数据的时候,就被覆盖成pageload里的了,onprerender事件在button事件执行后执行

热点排行