我在一个从后端C#代码生成的表中有一个带有40 ++下拉列表的ASPX页面,如下所示: Drop Down Lists
这些下拉列表可以通过以下帮助第三方jQuery进行搜索:
<script src="../Scripts/jquery-1.8.3.min.js" type="text/javascript" ></script>
<script src="../Scripts/jquery.searchabledropdown-1.0.8.min.js" type="text/javascript"></script>
一切正常,除非页面加载时非常慢,大约需要20到30秒。
任何建议伙伴们?野外搜索还有其他方法或其他更好的推荐吗?
...谢谢
这是后端代码的摘要:
//This chunk build the drop down list in the table
for (int y = 1; y <= DETAIL_ROW; y++)
{
DropDownList InternalOrderDDL = new DropDownList();
InternalOrderDDL.ID = "InternalOrderDDL" + y.ToString();
InternalOrderDDL.Width = Unit.Percentage(100);
InternalOrderDDL.Attributes.Add("onfocus", "ChangeDropDownWidth(this);");
InternalOrderDDL.Attributes.Add("onblur", "ResetDropDownWidth(this);");
HtmlTableCell InternalOrderCell = new HtmlTableCell();
InternalOrderCell.Controls.Add(InternalOrderDDL);
NewRow.Cells.Add(InternalOrderCell);
DetailTable.Rows.Add(NewRow);
}
//This chunk of code populate the Drop Down List
DataTable InternalOrderDT = new DataTable();
using (SqlConnection Conn = new SqlConnection(CONNECTION_STRING))
{
SqlCommand Cmd = new SqlCommand("spActiveInternalOrderRetrieveListByCompany", Conn);
Cmd.CommandTimeout = 0;
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.Add("CompanyID", SqlDbType.NVarChar).Value = companyID;
Conn.Open();
SqlDataReader Dr = Cmd.ExecuteReader();
InternalOrderDT.Load(Dr);
Conn.Close();
}
for (int y = 1; y <= DETAIL_ROW; y++)
{
DropDownList InternalOrderDDL = DetailTable.FindControl("InternalOrderDDL" + y.ToString()) as DropDownList;
InternalOrderDDL.DataTextField = "InternalOrderName";
InternalOrderDDL.DataValueField = "InternalOrderID";
InternalOrderDDL.DataSource = InternalOrderDT;
InternalOrderDDL.DataBind();
InternalOrderDDL.Items.Insert(0, new ListItem("--", ""));
}
答案 0 :(得分:0)
我的提示是缓存数据。检查可以缓存40个下拉列表中的哪一个,从您不需要从数据库获取数据但从缓存中使用的数据。它将为您节省一些时间并减少渲染所花费的时间。另请检查使用OutputCache的可能性。
可能值得的另一件事是检查数据库性能。检查是否存在可归档的旧数据。还要检查是否有任何缺失的索引,以及查询是否只返回您需要的数据,而不是表中的所有字段。