0

案子

我想要一个界面,让用户可以搜索现有项目并在三列中提供匹配项。但性能非常重要。因此,假设数据源是我从中检索姓名、电话号码和电子邮件的人员列表。我使用 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 个数据行来实现这一点是否合理?也就是说,有什么方法可以优化我的方法吗?

4

1 回答 1

0

您可以考虑创建您自己的过滤器(例如,通过存储您在第一次点击处理程序时获得的数据集,以便稍后检索数据所需的时间更少)并返回最少量的数据:http://demos.telerik。 com/aspnet-ajax/combobox/examples/populatingwithdata/autocompletesql/defaultcs.aspx。您还可以减少每个请求的项目。

于 2014-09-16T13:55:16.047 回答