如何从超大数据表中填充下拉列表?

Posted

技术标签:

【中文标题】如何从超大数据表中填充下拉列表?【英文标题】:how to fill dropdown list from extra huge datatable? 【发布时间】:2012-10-04 14:40:03 【问题描述】:

我有来自数据库的表这个表在我的 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();

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

【问题讨论】:

我建议您应该重新考虑您的用户界面,而不是使用自动完成/搜索选项来代替下拉菜单。即使是几百个选项对于下拉菜单来说也是糟糕的 UI。 @Oded 完美地说——这完全不是一个技术问题,因为这个问题的解决方案(对这个问题的回答)会导致 UI 失效。 【参考方案1】:

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

请参考以下页面了解一下

jQuery Searchable DropDown Plugin Demo

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于如何从超大数据表中填充下拉列表?的主要内容,如果未能解决你的问题,请参考以下文章

从相邻下拉列表的单元格中输入数据时,如何删除填充颜色?

如何在从数据库填充的 Jquery 下拉列表中显示选中的值

如何通过从另一个下拉列表中选择值来填充下拉列表?

如何从现有 SQL DB ASP.Net MVC 4 在下拉列表中填充数据

提交表单时如何从 Spring 下拉列表中填充表单

从下拉列表中填充 Bootstrap 表单