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的答案是最好的选择。我认为像这样的下载者是没有意义的。
另一方面,时间问题很难避免。你可以使用