案子
我想要一个界面,让用户可以搜索现有项目并在三列中提供匹配项。但性能非常重要。因此,假设数据源是我从中检索姓名、电话号码和电子邮件的人员列表。我使用 Telerik 的 RadComboBox,它是内置的 EnableLoadOnDemand(在按键、粘贴等时重新加载列表)。
从第一次测试中,我看到性能命中出现在 500 个数据项左右。对我来说,这根本不是不合理的,因为模式匹配不仅在所有三列中完成,而且属于包含类型(即它匹配字符串中的任何位置)。顺便说一句,当将搜索模式切换到 StartsWith 时,我看不到任何显着的性能提升。
RadComboBox
<telerik:RadComboBox runat="server" ID="RadComboBox1"
Height="290px" Width="700px" EmptyMessage="Enter your query" EnableVirtualScrolling="False"
MarkFirstMatch="true" Filter="StartsWith" EnableLoadOnDemand="true"
HighlightTemplatedItems="true" AutoPostBack="True" EnableTextSelection="true"
DataSourceID="SqlDataSource1">
<HeaderTemplate>
<ul>
<li class="col1">Name</li>
<li class="col2">Mobile</li>
<li class="col3">E-mail</li>
</ul>
</HeaderTemplate>
<ItemTemplate>
<ul>
<li class="col1">
<%# DataBinder.Eval(Container.DataItem, "ContactName")%></li>
<li class="col2">
<%# DataBinder.Eval(Container.DataItem, "Mobile")%></li>
<li class="col3">
<%# DataBinder.Eval(Container.DataItem, "Email")%></li>
</ul>
</ItemTemplate>
</telerik:RadComboBox>
我期望用 3000 个数据行来实现这一点是否合理?也就是说,有什么方法可以优化我的方法吗?