我正在使用客户选择模块,该模块在键入时将显示autocomplete
。似乎Select2.js
可以完成这项工作,我已经设法通过简单的数据绑定将dropdownlist
填充到后端(.cs
文件)中。
[问题是,我仅使用15个客户的样本数据,因此性能还不错,我希望有将近2000个客户的实际数据,因此仅通过绑定便会破坏性能。
这是我的绑定事件和select2.js
的实现的代码
[.aspx
文件:
<asp:DropDownList runat="server" ID="ddlCustomers" CssClass="form-control" async="">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
[.cs
文件:
protected void BindDropDownCustomers()
{
DataTable dt = SharedClass.getAPI("CustomerProfile_All"); //Returns Data from Webservice
DataColumn newColumn = new DataColumn();
//just formating the display
newColumn.ColumnName = "FullName";
newColumn.DataType = System.Type.GetType("System.String");
newColumn.Expression = "Cust_Last_Name+', '+Cust_First_Name";
dt.Columns.Add(newColumn);
ddlCustomers.DataTextField = "FullName";
ddlCustomers.DataValueField = "SmartCardID";
ddlCustomers.DataSource = dt.DefaultView;
ddlCustomers.DataBind();
ddlCustomers.Items.Insert(0, new ListItem("Select Customer", ""));
}
[select2.js
脚本:
$('#<%= ddlCustomers.ClientID %>').select2({
placeholder: "Select customer",
minimumResultsForSearch: 2,
minimumInputLength: 3,
allowClear: true
});
我想要类似的事情,在用户输入至少3个字符之后,将执行查询并获取所有相关数据,这些数据将填充dropdownlist
并同时限制或优化显示。
好吧,在我看来,使用javascript
在客户端计算机上运行2000次循环(最好检查用户键入的字符是否大于3)调用服务器并在用户键入任何内容时打开SQL Connection
来查询内容。可以将其想象为当网络变慢时,延迟会更大,如果成千上万的用户对服务器进行相同的调用,而服务器只是在搜索记录,该怎么办?好吧,这只是一个意见。当然,您可以决定什么适合您。
如果您仍然想要这样做,则可以查找一些付费控件,或者查看ajax工具包中是否包含一个控件。此外,如果您想以自定义方式进行操作,则可以使用jquery-ui autocomplete
完成任务。
我不会提供源代码来执行此操作,但这是您可能想要执行的粗略想法:
jQuery-UI autocomplete
连接到正在搜索并从数据库返回结果的文本框中jquery/javascript
事件以选择相关值时,添加响应时添加自定义HTML。希望这给出一个粗略的主意。