在编辑个人资料页面中的表单提交上,文本框值保持不变

时间:2011-04-07 05:28:57

标签: c# asp.net

我正在尝试创建一个编辑个人资料页面,所以当页面首先加载时,我将所有文本框值填充为特定用户的数据库中的值。我正在使用代码执行此操作:

        DBconn obj1 = new DBconn();
        String sql1 = "select* from users where user_id='" + Session["user_id"].ToString() + "'";
        DataTable dt = new DataTable();
        dt = obj1.getdatatable(sql1);
        if (dt.Rows.Count > 0)
        {
            referal_id.Text = dt.Rows[0]["referal_id"].ToString();
            name.Text = dt.Rows[0]["name"].ToString();
            password.Text = dt.Rows[0]["password"].ToString();
            email.Text = dt.Rows[0]["email"].ToString();
            mobile.Text = dt.Rows[0]["mobile"].ToString();
            city.Text = dt.Rows[0]["city"].ToString();
            state.Text = dt.Rows[0]["state"].ToString();
            pincode.Text = dt.Rows[0]["pincode"].ToString();
            sec_ques.Text = dt.Rows[0]["securityq"].ToString();
            answer.Text = dt.Rows[0]["answer"].ToString();
            age.Text = dt.Rows[0]["age"].ToString();
            gender.Text = dt.Rows[0]["gender"].ToString();
            user_id.Text = dt.Rows[0]["user_id"].ToString();
            address.Text = dt.Rows[0]["address"].ToString();
            date_of_joining.Text = dt.Rows[0]["date_of_joining"].ToString();
            user_type.Text = dt.Rows[0]["user_type"].ToString();
        }

现在这将填充所有带有值的文本框。 当用户在某个文本框中编辑某些值并重新提交表单时,数据库将更新并实现代码:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    int i;
    DBconn obj2 = new DBconn();
    String sql2 = "update users set name='"+name.Text+"',address='"+address.Text+"',age='"+age.Text+"',gender='"+gender.Text+"',email='"+email.Text+"',mobile='"+mobile.Text+"',securityq='"+sec_ques.Text+"',answer='"+answer.Text+"',city='"+city.Text+"',state='"+state.Text+"',pincode='"+pincode.Text+"' where user_id='"+Session["user_id"].ToString()+"'";
    i = obj2.executeDML(sql2);
    if (i > 0)
    {
        Label1.Visible = true;
        Image2.Visible = true;
        Label1.Text = "Updated successfully!";

    }
    else
    {
        Label1.Visible = true;

        Label1.Text = "Oops Update was unsuccessfull!";
    }

}

问题是数据库是否已经使用以前存在于数据库中的值进行更新。当我使用观察点时,我发现sql语句被加载了文本框值,我使用上面的数据库代码绑定但是没有获取用户编辑的值。

帮助。

3 个答案:

答案 0 :(得分:4)

嘿罗宾, 请检查代码是否置于!IsPostback条件下。

请绑定此if循环下的值。

    if(!IsPostback)
    {

    // Bind values

    }

在页面加载时执行此操作。

答案 1 :(得分:2)

值必须仅在第一次加载页面时绑定。

在你的情况下,似乎文本框的值在每次加载时都被绑定(即使在回发中也加载了值。)

因此,在页面加载中,您必须检查页面是否回发的条件。

因此在绑定页面加载中的值时添加此条件。

 if(!IsPostback)      

答案 2 :(得分:2)

首先检查调用mathod绑定值的位置......

把它放在

  

Page.isPostback

所以它不会在发布时更改值,那么当你保存它时,值会改变

当您点击按钮并再次加载页面时,该值必须更改。