代码之家  ›  专栏  ›  技术社区  ›  Brian Garson

在发出新请求时,是否可以放弃/中止仍在处理的RadAjaxRequest?

  •  2
  • Brian Garson  · 技术社区  · 11 年前

    我有一个C#web应用程序,它向用户提供报告,有时生成报告需要几分钟(而不是几秒钟)。

    我有一个 RadTreeView 第页,共页 ReportType “链接,当单击时执行 RadAjaxRequest 使用 RadAjaxManager 来自客户端。

    function RadTreeviewNodeClicked(sender, eventArgs) {
                try {
                    console.log("fired again: " + eventArgs.get_node().get_text());
                    var radAjaxManager = $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>");
                    radAjaxManager.ajaxRequest("NodeClicked");
                } catch (error) {
                    console.log("error on nodeclicked");
                }
            }
    
     //from my pageload
     radAjaxManager1 = RadAjaxManager.GetCurrent(Page);
     radAjaxManager1.AjaxRequest += RadAjaxManager1_AjaxRequest;
     radAjaxManager1.ResponseScripts.Add("AttachJQueryUIDateTimePickers();");
     radAjaxManager1.AjaxSettings.AddAjaxSetting(radAjaxManager1,pnlRightContent,RadAjaxLoadingPanel1);
     radAjaxManager1.ClientEvents.OnResponseEnd = "ResponseEnd";
    

    这个 ajaxRequest 服务器上的处理程序为单击的链接加载适当的报告,并将其显示在asp:面板的右侧。菜单和面板都封装在 RadAjaxPanel .

    如果报告数据仍在加载(存储过程正在执行),并且用户单击另一个链接:

    • 客户端事件被触发
    • 服务器完成第一个事件
    • responseEnd事件被激发
    • 服务器开始处理第二个事件

    我想在单击后续事件时放弃/中止第一个事件。这可能吗?

    1 回复  |  直到 11 年前
        1
  •  0
  •   Brian Garson    11 年前

    我发现Telerik有可能,通过将rad Ajax Manager的Queue Size设置为0:

            radAjaxManager1.RequestQueueSize = 0;