0

我有来自数据库的表这个表在我的 asp 页面中有 400000 行我的下拉列表(ddlPlaintiffName)从这个方法填充

 私人无效FillPlaintiff()
    {

        //通过来自web.config的连接字符串声明连接
        SqlConnection sqlcon = 新的 SqlConnection
            (ConfigurationManager.ConnectionStrings["SystemConn"].ConnectionString);
        //将sql语句声明为字符串变量

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



        数据表 ds = 新数据表();
        //用包含数据库数据的数据适配器填充数据集
     // 悲伤。填充(ds);
        sqlcon.Open();
         SqlDataAdapter 悲伤 = 新的 SqlDataAdapter(sqlcom);

         悲伤。填充(ds);

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

    }


但是每次回发我的负载都非常非常慢我该如何避免这种情况

4

3 回答 3

5

首先,您不应该将这么大的表格用于下拉列表。由于用户不容易找到价值,所以对他没有用处。您应该提供某种搜索并基于搜索条件,尽管 ajax,数据应该显示在下拉列表中。只有当用户输入三个或更多字符时才应该开始搜索,否则基于 ajax 的查询也会变慢。

请参阅以下页面以获取想法

jQuery Searchable DropDown 插件演示

于 2012-10-14T11:37:42.180 回答
1

首先,说“不要这样做”的评论和答案是正确的——包含几十个项目的下拉菜单对用户几乎总是无用的。

其次,你的问题的答案——如果你不能改变用户界面——是引入缓存。有几种方法可以做到这一点;你选择哪一种取决于具体的瓶颈,但我会先阅读这个

于 2012-10-14T12:05:31.747 回答
1

@Oded 的答案是最好的选择。我认为这样的 DropDownList 没有任何意义。

另一方面,时间问题难以避免。您可以使用ViewState,但是 400,000 行就像...太多了!也许,如果你解释你在这个表中存储什么样的数据,我们可以考虑另一种方法来做到这一点

于 2012-10-14T11:48:05.417 回答