我在页面上有多个下拉列表。它们都包含国家列表。所以在后台我从数据库获取国家并缓存它们。我想从另一个线程填充那些下拉列表。
我也在使用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();
}
}
有人看到可能的问题吗?或许我的整个概念都错了?有谁知道如何解决这个问题?
答案 0 :(得分:1)
看看CascadingDropDown Extender from the ASP.NET AJAX Control Toolkit。它使用Web服务来填充下拉列表,因此它可以异步操作(我相信这就是你所追求的)。