0

私はデータベースからのテーブルを持っていますこのテーブルは私のaspページに400000行を持っています私のドロップダウンリスト(ddlPlaintiffName)はこのメソッドから記入します

 private void FillPlaintiff()
    {{

        //web.configから接続文字列を渡すことで接続を宣言します
        SqlConnection sqlcon = new SqlConnection
            (ConfigurationManager.ConnectionStrings ["SystemConn"]。ConnectionString);
        //SQLステートメントを文字列変数として宣言します

        SqlCommand sqlcom = new SqlCommand();
        sqlcom.Connection = sqlcon;
        sqlcom.CommandType = CommandType.StoredProcedure;
        sqlcom.CommandText = "proc_SelectPlaintiff";



        DataTable ds = new DataTable();
        //データベースからのデータを含むデータアダプターでデータセットを埋めます
     // sad.Fill(ds);
        sqlcon.Open();
         SqlDataAdapter sad = new SqlDataAdapter(sqlcom);

         sad.Fill(ds);

        ddlPlaintiffName.DataSource = ds;
        ddlPlaintiffName.DataBind();
        ddlPlaintiffName.Items.Insert(0、 "--select-");
        sqlcon.Close();

    }


しかし、すべてのポストバックの負荷は非常に遅いので、どうすればこれを回避できますか

4

3 に答える 3

5

まず第一に、ドロップダウンリストにそのような大きなテーブルを使用するべきではありません。ユーザーは価値を簡単に見つけることができないので、彼の役に立たない。ある種の検索を提供し、検索条件に基づいて提供する必要がありますが、ajaxの場合、データはドロップダウンリストに表示されます。ユーザーが3文字以上を入力した場合にのみ検索を開始する必要があります。そうしないと、ajaxベースのクエリも遅くなります。

アイデアを得るために次のページを参照してください

jQuery検索可能なドロップダウンプラグインのデモ

于 2012-10-14T11:37:42.180 に答える
1

@Odedによる回答が最良の選択肢です。そのようなDropDownListは意味がないと思います。

一方、時間の問題は避けられません。を使用することもできますがViewState、400,000行は...多すぎます。たぶん、このテーブルにどのような種類のデータを格納しているかを説明すると、これを行う別の方法を考えることができます

于 2012-10-14T11:48:05.417 に答える
1

まず、「これを行わないでください」というコメントと回答は正しいです。数十を超えるアイテムを含むドロップダウンは、ほとんどの場合、ユーザーにとって役に立たないものです。

次に、ユーザーインターフェイスを変更できない場合の質問に対する答えは、キャッシュを導入することです。これを行うにはいくつかの方法があります。どの種類を選択するかは特定のボトルネックによって異なりますが、私はこれを読むことから始めます。

于 2012-10-14T12:05:31.747 に答える