2009-06-18 4 views
3

У меня есть веб-форма ASP.NET, на которой я использую элемент управления DropDownList, чтобы пользователь мог выбрать элемент и просмотреть связанные результаты. По какой-то причине, когда я устанавливаю свойство SelectedValue в DropDownList, значение, которое оно установлено, не доступно сразу.Свойство ASP.NET DropDownList SelectedValue не устанавливается сразу

Вот мой код:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     DropDownList1.SelectedValue = "5"; 
     BindView(); 
    } 
} 

protected void BindActivities() 
{ 
    DataClassesDataContext dc = new DataClassesDataContext(); 
    var query = from activity in dc.Activities 
       where activity.AssignedTo == Convert.ToInt32(DropDownList1.SelectedValue); 
    GridView1.DataSource = query; 
    GridView1.DataBind(); 
} 

В предыдущем коде я получаю ошибку, что DropDownList1.SelectedValue является нулевым. Самое странное, что если я прокомментирую код, который использует DropDownList1.SelectedValue и пусть загружается страница, DropDownList1 на самом деле имеет значение 5. Таким образом, похоже, что он устанавливается правильно, но просто не доступен сразу. Отладчик подтверждает, что DropDownList.SelectedValue не установлен в 5 сразу после строки кода, который его устанавливает.

Любые идеи, что здесь происходит?

ответ

7

Вы устанавливаете значение, прежде чем связать выпадающий список?

+1

DropDownList декларативно связан с элементом управления LinqDataSource. Я думаю, что это происходит до события Page_Load. Это верно? – joshb

+1

Нет, если вы явно не назовете это. –

+0

Я добавил явный вызов DropDownList1.DataBind() непосредственно перед установкой SelectedValue, и он работает так, как я ожидал сейчас. – joshb

2

Да пользователь выше прав

if (!Page.IsPostBack) 
{ 
    BindView(); 
    DropDownList1.SelectedValue = "5"; 
} 

... должно работать нормально.

Существует не такая вещь, как задержка в исполнении, а только порядок исполнения.

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