0

私は検索機能に取り組んでおり、バックエンドによって制限されています。1つの大きな検索ではなく、複数の小さな検索を実行することで、速度を上げようとしています。私が現在行っているのはOnClickイベントで、検索の最初のビットを実行し、結果をグリッドビューに返します。さらに検索を行う必要がある場合は、AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScriptを使用して、送信ボタンをもう一度クリックする小さな関数を登録します。

これは機能しますが、ハックのようで、もっと良い方法があるはずだと思います。私は何かが足りないのですか?

4

2 に答える 2

1

頭に浮かぶ最初のオプションは複雑さの追加レイヤーですが、データを提供するために小さなサービスを使用して必要な回数だけ結果のセットをプルするためにajaxを使用することで、おそらく最高のユーザーエクスペリエンスを得るでしょう。その例に、呼び出しを示すためのjqueryを少し追加しました。

searchRequest = $.ajax({
            url: '/GetSearchData.svc',
            data: { searchText: 1 },
            traditional: true,
            success: function(data) {

                // Do something with returned data or kick off another async request
        });

これにより、生データを任意のサイズまたはチャンクでプルできます。または、スクロールなどの別のイベントにそれらを添付して、時間の経過とともにアイテムを追加します。

于 2012-12-06T21:51:16.710 に答える
0

私は次のようなタイマーを使用することになりました:

    <asp:Timer runat="server" ID="timer1" Interval="1000"
   ontick="timer1_Tick" Enabled="false" />

次に、ButtonのonClickイベントで、検索を実行するために実行中のスレッドを開始し、タイマーを開始しました。

timer1.Enabled = true;
ThreadStart ts = continueSearch;
Thread thread = new Thread(ts);
thread.Start();

そしてtimer1_Tickハンドラーで:

if(Session["SearchResults"] != null)
{
    DataView dv = (DataView)Session["SearchResults"];
    dv.Sort = (string)Session["SortExpression"] + (string)Session["SortDirection"];
    gvResults.DataSource = dv;
    gvResults.DataBind();
}
于 2012-12-11T18:12:53.090 に答える