3

我有一个网站,它在页面加载时从数据库中检索某些信息并填充许多文本框。然后,如果用户想要进行任何更改,他可以修改这些文本框的内容,然后他可以保存更改。

这是我用来在保存更改之前获取框的内容的方法:

string username = Session["Username"].ToString();
string vendor_name = Textbox_Vendor.Text;
string address = Textbox_Address.Text;
string city = Textbox_City.Text;
string country = Textbox_Country.Text;

现在,我遇到的主要问题是要检索的值是旧值。例如,假设在页面加载时,tel 字段为 12345678,并且用户将文本框中的值更改为 789046778。在保存更改之前加载到变量 tel 中的值是 12345678,而不是 789046778。

请问如何从文本框中检索新的更新值?谢谢 :)

页面加载

protected void Page_Load(object sender, EventArgs e)
{
    Label_Error.Visible = false;
    Encryption enc = new Encryption();

    if (Session["Username"] == null)
    {
        Response.Redirect("HomePage.aspx");
    }

    else
    {
        string username = Session["Username"].ToString();
        string vendor_name = "";
        string address = "";
        string city = "";
        string country = "";
        bool exists1 = false;
        bool error1 = true;

        try
        {
            string connection1 = ConfigurationManager.ConnectionStrings["DB_Connection"].ConnectionString;
            SqlConnection conn1 = new SqlConnection(connection1);
            SqlDataReader rdr1 = null;

            conn1.Open();
            SqlCommand cmd1 = new SqlCommand("GetByUsername", conn1);
            cmd1.CommandType = CommandType.StoredProcedure;
            cmd1.Parameters.AddWithValue("@username", username);
            rdr1 = cmd1.ExecuteReader();
4

1 回答 1

5

新值被 中的旧值覆盖Page_Load。您在每次页面加载时为文本框分配旧值,而实际上您只想在第一次调用时执行此操作。在回发上,您不需要分配任何东西:

if (!Page.IsPostback)
{
    // first call - assign values
    Textbox_Vendor.Text = vendor_name;
    ...
}
于 2013-06-21T08:13:25.690 回答