关于c#:如何从超大数据表填充下拉列表?

how to fill dropdown list from extra huge datatable?

我有数据库中的表此表在我的ASP页中有400000行我的下拉列表(ddlplantiffname)填充自这种方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 private void FillPlaintiff()
    {

        //declare connection by pass connection string from web.config
        SqlConnection sqlcon = new SqlConnection
            (ConfigurationManager.ConnectionStrings["SystemConn"].ConnectionString);
        //declare sql statment  as astring variable

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



        DataTable ds = new DataTable();
        //fill data set with data adabter that contain data from database
     //   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();

    }

但是每次回邮我的工作量都很慢,我怎么能避免呢


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

请参考下页了解一个想法

jquery可搜索下拉插件演示


首先,说"不要这样做"的评论和回答是正确的——一个包含十几个项目的下拉列表对用户来说几乎总是无用的。

其次,如果不能更改用户界面,那么问题的答案就是引入缓存。有几种方法可以做到这一点;您选择哪一种取决于具体的瓶颈,但我将从阅读本文开始。


@oded的答案是最好的选择。我认为像这样的下载者是没有意义的。

另一方面,时间问题很难避免。你可以使用ViewState,但是40万行就像…太多!也许,如果你解释一下你在这个表中存储了什么类型的数据,我们可以考虑另一种方法