0

場合

ユーザーが既存のアイテムを検索し、一致するものを 3 つの列に表示できるインターフェイスが必要です。しかし、パフォーマンスは非常に重要です。では、データソースが、Name、PhoneNo、および Email を取得する人々のリストであるとしましょう。私は Telerik の RadComboBox を使用しており、EnableLoadOnDemand が組み込まれています (キーを押したり、貼り付けたりすると、リストがリロードされます)。

最初のテストから、パフォーマンス ヒットが 500 データアイテム マークのどこかに表示されるのを見てきました。パターン マッチングは 3 つの列すべてで行われるだけでなく、Contains 型でもある (つまり、文字列内の任意の場所に一致する) ため、これはまったく不合理ではありません。ちなみに、検索モードを 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 に答える