我正在研究搜索功能,并受到我的后端限制。我试图通过多次小搜索而不是一次大搜索加快速度。我目前正在做的是在OnClick事件中,做第一点搜索并将结果返回到gridview。如果还有更多的搜索要做,我使用AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScript来注册一个再次点击提交按钮的小函数。
这有效,但看起来像是一个黑客,我觉得应该有一个更好的方法。我错过了什么吗?
答案 0 :(得分: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
});
这将允许您提取所需的任何大小或块的原始数据。或者将它们附加到另一个事件,例如滚动以随时间添加项目。
答案 1 :(得分: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();
}