12

ユーザーが適切な名前を検索できるように、従業員のリストをドロップダウン リストにバインドし、オートコンプリート機能を使用したいと考えています。RadComboBox を使用します

私には2つの主な問題があります:

1- 項目に関するリストが非常に大きいため5000、ブラウザでこの大量のデータをバインドすると、ハングするか、非常に遅くなります。(パフォーマンスの問題)

Telerikのドキュメントによると

データ ソースを RadComboBox に設定します。これを行うには、DataSourceID または DataSource プロパティを使用し、DataTextField プロパティと DataValueField プロパティをデータ ソースのそれぞれのフィールドに設定します。(DataSource を使用する場合は、ポストバックごとにプロパティを設定する必要があることに注意してください。最も便利なのは Page_Init です。) EnableAutomaticLoadOnDemand を true に設定します。

そのため、毎回次のメソッドを呼び出す必要がありますPage_Init!!!

  protected void BindInnerInstructors()
    {
        ddl_inner_sup.Items.Clear();
        ddl_inner_sup.DataSource = Utilities.GetAllInnerInstructors();
        ddl_inner_sup.DataValueField = "emp_num";
        ddl_inner_sup.DataTextField = "name";
        ddl_inner_sup.DataBind();
    }

2- コンボ ボックスの選択を設定しようとしたときに、オブジェクト参照がオブジェクトのインスタンスに設定されていません。

私はこれを通してこの問題を克服します


私は約4ドロップダウリストを持っていますが、イベントに従って全員がバインドする必要がありますが、page_init.

この問題に対する詳細な回答に感謝します。

4

6 に答える 6

9

私の会社にも同様の問題がありました。Select2 という jquery オブジェクトを使用することになり、リストを遅延読み込みします。基本的に、読み込み時に最初の 10 程度のみを読み込み、読み込みを高速化します。ユーザーが最初の 10 を超えて下にスクロールすると、次の 10 を読み込みます。Select2 には、検索に基づいてカスタム リストを返すためにサーバーをヒットする検索機能があります。

一度に 5000 個の要素を読み込む際の問題は、ブラウザが要素を読み込み、繰り返し処理し、必要に応じて操作するのに永遠に時間がかかることです。「select2 を使用する必要がある」と言っているわけではありません。

幸運を。

于 2013-05-26T14:00:18.003 に答える
1

データセットを表示することはお勧めしませんが、代わりに JavaScript オブジェクトに保存します。次に、そのオブジェクトのリストでオートコンプリートを実行できます。これは、セレクターを使用してjqueryを介して行われ、オートコンプリート機能を適用します。

例:

var systems = [{t:"hi",s:"something"}.{t:"hi",s:"something"},{t:"hi",s:"something"}];
$("#s").autocomplete(systems, 
{
width: 300,
formatItem: function(item) 
{ return item.t + item.s; },
formatResult: function(item) 
{ return item.t; }
});
于 2013-06-19T18:22:24.200 に答える
1

表示するアイテムが多数ある場合は、VirtualizingStackPanel を RadComboBoxes の ItemsPanel として使用します。VirtualizingStackPanel を使用すると、RadComboBox に 1 万の項目を含めることができます。

この XAML コードを使用します。

            <!-- WPF ItemsControls like ComboBox, ListBox or Menu use a StackPanel as their internal layout panel. 
                 Use a VirtualizingStackPanel for performance. Else the Combobox will freeze!   -->
            <ItemsPanelTemplate x:Key="itemsPanelTemplate">
                <VirtualizingStackPanel />
            </ItemsPanelTemplate>

            <!-- This style specifies how RadComboBoxes look like -->
            <Style TargetType="telerik:RadComboBox">
                <Setter Property="ItemsPanel" Value="{StaticResource itemsPanelTemplate}"/>
            </Style>
于 2014-01-27T15:40:10.983 に答える
0

簡単にするために、最初の15または20の名前を追加するだけで、ユーザーがコンボボックスに入力するときに、データベースから返された名前でコンボボックスを埋めますが、すべてではなく、ブラウザがハングしないようにいくつかの名前だけで埋めます...

于 2013-06-16T14:42:48.317 に答える
0

グーグルと同じことができます。Google で何かを書くと、入力したテキストと異なるテキストは消えますが、同じテキストはそこに残ります。これにより、検索が容易になります。これが答えです。

于 2013-06-20T04:38:41.373 に答える