如何通过单击按钮对gridview进行多次回发/ ajax更新?

时间:2012-12-06 21:34:09

标签: gridview webforms ajaxcontroltoolkit

我正在研究搜索功能,并受到我的后端限制。我试图通过多次小搜索而不是一次大搜索加快速度。我目前正在做的是在OnClick事件中,做第一点搜索并将结果返回到gridview。如果还有更多的搜索要做,我使用AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScript来注册一个再次点击提交按钮的小函数。

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

2 个答案:

答案 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();
}