2012-12-06 39 views
0

我正在研究搜索功能,并受到我的后端限制。我试图通过多次小搜索来加速它,而不是一个大搜索。我目前正在做的事是在OnClick事件中,首先进行搜索并将结果返回给gridview。如果还有更多的搜索需要完成,我使用AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScript注册一个小函数,再次点击提交按钮。如何对单个按钮单击的gridview执行多个回发/ ajax更新?

这有效,但似乎是一个黑客,我觉得应该有更好的方法。我错过了什么吗?

+0

您是否正在寻找点击按钮或搜索的一个更有效的方法以不同的方式?就像开启后台功能一样,它执行多个异步查询来以块的形式提取数据?或类似的东西 –

+0

@BryanRoberts第二,踢背景功能,做多个异步查询 – Kevin

+0

“正确”的方法是使用分页,以加快搜索:返回前20个结果,然后点击“下一页”如果你想要20个更多的搜索结果... –

回答

0

最后我用一个定时器是这样的:

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

然后在按钮的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(); 
} 
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 
     }); 

这将允许你拉任何你想要的大小或块的原始数据。或者将它们附加到另一个事件上,例如滚动以添加项目。

+0

嗯,对jQuery不太熟悉。 – Kevin

相关问题