2011-12-13 3 views
1

У меня есть раскрывающийся список, который при изменении сохранит новое значение в переменной ViewState, так что после обратной передачи выпадающий список будет извлекать выбранное значение из ViewState, если оно было установлено ранее.Сохранение выпадающего списка выбранного значения для ViewState

Когда он пытается сохранить выбранное значение в DropDownList1_SelectedIndexChanged для ViewState, он всегда вставляет исходное значение, а не обновленное. В этом случае ViewState всегда «R» и никогда не изменяется в соответствии с другими выбранными значениями.

Любые идеи?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication11 
{ 
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     if (ViewState["List1_Value"] != null) 
     { 
      DropDownList1.SelectedValue = ViewState["List1_Value"].ToString(); 

     } 
     else 
     { 
      DropDownList1.SelectedValue = "R"; 

     } 

    } 

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ViewState["List1_Value"] = DropDownList1.SelectedValue.ToString(); 

    }  

} 
} 
+0

Вы уверены, что проблема с сохранением в viewstate? Разве это не всегда R, потому что оператор if возвращает FALSE? –

+0

Оператор if возвращает false на первой странице_load. Затем, когда выбранное значение изменено, ViewState сохраняет значение списка, но только оригинальное «R», никогда не отличающееся значение, которое было выбрано для запуска SelectedIndexChanged. Во второй раз утверждение if истинно, и список извлекает его значение из ViewState, что досадно остается «R», так как selectedIndexChanged не сохраняет новое выбранное значение в ViewState. –

ответ

0

Событие Page_Load срабатывает перед событием SelectedIndexChanged. Когда вы изменяете значение в раскрывающемся списке, долина ViewState по-прежнему равна null, поэтому выпадающий список имеет значение «R»?

Tale посмотреть на следующей статье MSDN обсуждения страница жизненного цикла: http://msdn.microsoft.com/en-us/library/ms178472.aspx

+0

ok, но во второй раз ViewState имеет значение «R», что означает, что ViewState был сохранен до перезагрузки страницы. Просто нужно выяснить, как получить другое значение в ViewState? –

1

Измените метод Page_Load, чтобы обойти код выпадающего списка, если это не должность обратно.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     if (ViewState["List1_Value"] != null) 
     { 
      DropDownList1.SelectedValue = ViewState["List1_Value"].ToString(); 
     } 
     else 
     { 
      DropDownList1.SelectedValue = "R"; 
     } 
    } 
} 
+0

Спасибо за ваше предложение, это решило проблему –

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