2010-10-31 3 views
1

У меня есть страница asp.net с каталогом с текстовым полем и кнопкой на нем, при загрузке страницы текстовое поле получает текст в нем, если я меняю текст и нажимаю кнопку текст не обновляется.Значение текстового поля не обновляется

Что я делаю неправильно?

{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     DataTable table = CategoryAccess.GetProducts(); 

     ProductList.DataSource = table; 
     ProductList.DataBind(); 
    } 
} 

protected void btn_Click(object sender, EventArgs e) 
{ 
    string Name = textbox.Text; 

    CategoryAccess.UpdateProducts(Name); 
} 
} 
+0

Дополнительный код отсутствует здесь. Вы явно устанавливаете текст текстового поля. Если это так, это приведет к уничтожению изменений к моменту получения события btn_Click. – brumScouse

+0

Я немного потерял здесь, вы можете показать код .aspx, а также где находятся ссылки категории accessaccess? таблицу sql или что? – xandy

+0

Я сделал код короче, чтобы его было легко увидеть, он должен быть здесь, проблема, нет проблем с SQL. – Nicklas

ответ

0

Попробуйте добавить EnableViewState свойства в вашем управлении TextBox и установите значение true.

например.

<asp:TextBox ID="textBox1" 
      EnableViewState="true" 
      MaxLength="25" 
      runat="server"/> 

или вы можете сделать это программно:

protected void Page_Load(object sender, EventArgs e) 
{ 
    textBox1.EnableViewState = true; 
} 
+1

Дозированная работа, если меняю: textbox.text = "hello"; string Name = textbox.Text; значение будет обновлено до приветствия. Это похоже на уведомление в текстовом поле, что текст меняется. – Nicklas

0

Вы должны Бинг снова новые данные ...

protected void btn_Click(object sender, EventArgs e) 
{ 
    string Name = textbox.Text; 

    // you update with the new parametre 
    CategoryAccess.UpdateProducts(Name); 

    // you get the new data 
    DataTable table = CategoryAccess.GetProducts(); 

    // and show it 
    ProductList.DataSource = table; 
    ProductList.DataBind(); 
} 
+0

По-прежнему то же самое, значение базы данных остается прежним, даже если я покажу новое значение на странице. Я havent упомянул, что не могу видеть текстовое поле внутри datalist, потому что его в datalist, поэтому я использую это, чтобы получить значение текстового поля: foreach (DataListItem di в ProductList.Items) { textbox.Text = (((TextBox) (di.FindControl ("текстовое поле"))) Текст). } – Nicklas

1

У меня была такая же проблема. Я обнаружил, что положил textbox.text = "xxx" в Page_Load(), но за пределами if(!ispostback).

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