Заполнение выпадающего списка из другого потока в ASP.NET - PullRequest
0 голосов
/ 23 февраля 2009

У меня есть несколько выпадающих списков на странице. Все они содержат список стран. Так что на заднем плане я получаю страны из базы данных и кеширую их. Я хотел бы заполнить эти выпадающие списки из другого потока. Я также использую элементы управления AJAX, поэтому я хотел, чтобы все это происходило одновременно. А также после того, как пользователь выбирает страну, я хочу, чтобы города из этой страны показывались пользователю, и я хочу, чтобы получение городов происходило также в другом потоке, чтобы пользователь мог заполнять другие элементы управления, пока список еще не загружен.
Я где-то читал, что должен указать Page в качестве параметра для этого потока, а затем найти эти выпадающие списки и заполнить их. Но это не работает.

Вот функция, которая вызывается при запуске другого потока:

protected void GetCountries(object o)
{
    if (Session["Countries"] == null)
    {
        Session["Countries"] = CountryRepository.Instance.GetAll();
    }
    if (o is Page)
    {
        Page p = (Page)o;
        DropDownList ddl = (DropDownList)p.FindControl("ddlCountry");
        ddl.DataSource = Session["Countries"] as List<Country>;
        ddl.DataTextField = "Name";
        ddl.DataValueField = "Id";
        ddl.DataBind();
    }
}

Кто-нибудь видит возможную проблему? Или, может быть, вся моя концепция неверна? У кого-нибудь есть идеи, как решить эту проблему?

1 Ответ

1 голос
/ 23 февраля 2009

Взгляните на CascadingDropDown Extender из ASP.NET AJAX Control Toolkit . Он использует веб-службы для заполнения выпадающих списков, поэтому он может работать асинхронно (что, я считаю, то, что вам нужно).

...