2015-10-22 13 views
0

У меня есть эта страница, где пользователь может изменить ее информацию. Когда страница загружается, она заполняет информацию о пользователях в поля ввода текста. Затем вы можете изменить свою информацию и нажать «Сохранить». Данные должны быть сохранены в базе данных и должны также отражаться в текстовых полях из-за обновления. Но он не сохраняет данные. Если я удаляю считывание данных, данные сохраняются при нажатии кнопки, но когда данные считываются, данные не сохраняются.Сохранение базы данных, затем чтение из базы данных, данных нет

Это код в «читать данные» часть, это в Page_Load():

string loggedInUser = System.Web.HttpContext.Current.User.Identity.Name; 
    SqlConnection ConnectDb = new SqlConnection("Data Source=serverHere;Initial Catalog=catalogHere;User ID=userNameHere;Password=passwordHere;"); //Opretter database connection string 
    SqlDataReader infoReader = null; 
    SqlCommand getUserInfo = new SqlCommand("SELECT firstName,lastName,age,city,contact,bio FROM UserInfo WHERE userName = @userName", ConnectDb); 
    getUserInfo.Parameters.Add("@userName", loggedInUser); 
    ConnectDb.Open(); 
    infoReader = getUserInfo.ExecuteReader(); 
    infoReader.Read(); 
    { 
     tbInfoFirstName.Text = infoReader["firstName"].ToString(); 
     tbInfoLastname.Text = infoReader["lastName"].ToString(); 
     tbInfoAge.Text = infoReader["age"].ToString(); 
     tbInfoCity.Text = infoReader["city"].ToString(); 
     tbInfoKontakt.Text = infoReader["contact"].ToString(); 
     tbInfoAbout.Text = infoReader["bio"].ToString(); 
    }; 
    ConnectDb.Close(); 

Это код для кнопки сохранения:

string loggedInUser = System.Web.HttpContext.Current.User.Identity.Name; 

    SqlConnection ConnectDb = new SqlConnection("Data Source=serverHere;Initial Catalog=catalogHere;User ID=userNameHere;Password=passwordHere;"); 
    SqlCommand SavePersonInfo = new SqlCommand("UPDATE UserInfo SET firstName = @firstName,lastName = @lastName,age = @age,city = @city,contact = @contact,bio = @bio WHERE userName = @userName", ConnectDb); 
    SavePersonInfo.Parameters.AddWithValue("@firstName", tbInfoFirstName.Text); 
    SavePersonInfo.Parameters.AddWithValue("@lastName", tbInfoLastname.Text); 
    SavePersonInfo.Parameters.AddWithValue("@age", tbInfoAge.Text); 
    SavePersonInfo.Parameters.AddWithValue("@city", tbInfoCity.Text); 
    SavePersonInfo.Parameters.AddWithValue("@contact", tbInfoKontakt.Text); 
    SavePersonInfo.Parameters.AddWithValue("@bio", tbInfoAbout.Text); 
    SavePersonInfo.Parameters.AddWithValue("@userName", loggedInUser); 


    ConnectDb.Open(); 
    SavePersonInfo.ExecuteNonQuery(); 
    //Response.Redirect("Manage.aspx"); 
    ConnectDb.Close(); 

Как сказал , код сохранения работает сам по себе, но не тогда, когда код чтения также активен, например: Не закомментирован.

+0

Пожалуйста, отлаживать, какая часть (выбор или вставки) не удается, глядя в вашу базу данных с помощью инструмента. –

+0

'Page_Load' срабатывает перед обработчиками событий кнопки в Webforms. – Jamiec

+0

Да, он считывает данные при загрузке страницы. Но разве это не просто сделать это один раз? –

ответ

0

Я считаю, что событие Page_Load запускается перед кнопкой события на PostBack. В этом случае считываются старые данные, которые снова заполняют поля и, наконец, записывают старые данные. Вы проверили его?

Если это так, поместите код в Page_Load в если (IsPostBack!):

public void Page_Load() { 
    // ... 

    if (!IsPostBack) { 
     // code read the data 
    } 
} 
Смежные вопросы