1つのページに複数のドロップダウンリストがあります。それらはすべて国のリストを含んでいます。そのため、バックグラウンドでデータベースから国を取得してキャッシュしています。別のスレッドからこれらのドロップダウンリストにデータを入力したいと思います。私も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();
}
}
誰かが問題の可能性を見ていますか?それとも私の全体の概念が間違っていますか?誰かがこの問題を解決する方法を知っていますか?