0

我在一个页面上有多个下拉列表。它们都包含国家/地区列表。所以在后台我从数据库中获取国家并缓存它们。我想从另一个线程填充这些下拉列表。我也在使用 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();
    }
}

有人看到可能的问题吗?或者也许我的整个概念是错误的?有谁知道如何解决这个问题?

4

1 回答 1

1

查看ASP.NET AJAX Control Toolkit 中的 CascadingDropDown Extender。它使用 Web 服务来填充下拉列表,因此它可以异步操作(我相信这就是您所追求的)。

于 2009-02-22T21:31:53.100 回答