2016-04-24 8 views
0

У меня есть две веб-страницы, я отправляю данные от одного к другому с помощью сеанса. С первого веб-страницы получить данные с помощью сеанса на вторую страницу и установить его в текстовые поля внутри LayoutTemplate, как показано ниже,Tetxtbox внутри LayoutTemplate не принимает изменяющийся текст в C#

protected void Page_Load(object sender, EventArgs e) 
     { 
      instructrid = Int32.Parse(Session["instructorId"].ToString()); 
      ((TextBox)Login1.FindControl("userName")).Text = Session["firstname"].ToString(); 
      ((TextBox)Login1.FindControl("password")).Text = Session["surname"].ToString(); 
      ((TextBox)Login1.FindControl("gender")).Text = Session["gender"].ToString(); 
      ((TextBox)Login1.FindControl("email")).Text = Session["email"].ToString(); 
      ((TextBox)Login1.FindControl("style")).Text = Session["style"].ToString(); 
      ((TextBox)Login1.FindControl("phonenumber")).Text = Session["phonenumber"].ToString(); 
      ((TextBox)Login1.FindControl("hourlyRate")).Text = Session["hourlyRate"].ToString(); 
      ((TextBox)Login1.FindControl("availability")).Text = Session["availability"].ToString(); 
     } 

Затем во второй пользователь страницы может редактировать эти значения в текстовые поля, если это необходимо. Затем я беру эти измененные значения и отправляю их в базу данных для их обновления. Но проблема в том, что данные не меняются от значения сеанса. Я могу редактировать значения в текстовом поле, но в бэкэнд это то же значение, что и в сеансе. Ниже приведен код для захвата значений нажатием кнопки.

protected void Button1_Click(object sender, EventArgs e) 
     { 
      string firstname = ((TextBox)Login1.FindControl("userName")).Text; 
      string surname = ((TextBox)Login1.FindControl("password")).Text; 
      string gender = ((TextBox)Login1.FindControl("gender")).Text; 
      string email = ((TextBox)Login1.FindControl("email")).Text; 
      string style = ((TextBox)Login1.FindControl("style")).Text; 
      string phonenumber = ((TextBox)Login1.FindControl("phonenumber")).Text; 
      string hourlyrate = ((TextBox)Login1.FindControl("hourlyRate")).Text; 
      string availability = ((TextBox)Login1.FindControl("availability")).Text; 
      DBClass.editInstructor(instructrid, firstname, surname, gender, email, style,phonenumber, hourlyrate, availability); 
     } 

Я не могу понять, как это происходит. Пожалуйста, помогите

ответ

1

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

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!IsPostBack) 
     { 
     instructrid = Int32.Parse(Session["instructorId"].ToString()); 
     ((TextBox)Login1.FindControl("userName")).Text = Session["firstname"].ToString(); 
     ((TextBox)Login1.FindControl("password")).Text = Session["surname"].ToString(); 
     ((TextBox)Login1.FindControl("gender")).Text = Session["gender"].ToString(); 
     ((TextBox)Login1.FindControl("email")).Text = Session["email"].ToString(); 
     ((TextBox)Login1.FindControl("style")).Text = Session["style"].ToString(); 
     ((TextBox)Login1.FindControl("phonenumber")).Text = Session["phonenumber"].ToString(); 
     ((TextBox)Login1.FindControl("hourlyRate")).Text = Session["hourlyRate"].ToString(); 
     ((TextBox)Login1.FindControl("availability")).Text = Session["availability"].ToString(); 
     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^