0

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();
    }
}

誰かが問題の可能性を見ていますか?それとも私の全体の概念が間違っていますか?誰かがこの問題を解決する方法を知っていますか?

4

1 に答える 1

1

ASP.NET AJAXControlToolkitのCascadingDropDownExtenderを見てください。Webサービスを使用してドロップダウンにデータを入力するため、非同期で動作できます(これがあなたが求めているものだと私は信じています)。

于 2009-02-22T21:31:53.100 に答える