2012-09-05 56 views
3

我有按钮页面,我想通过异步的cliking按钮加载数据2个数据网格。ASP.NET服务器不处理页面异步

这是网页的代码,使用jQuery作出其他2页,将产生HTML我电话。

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Solutions_CashCenter_StockManagement_Test_Test" %> 
<asp:Content ID="Content2" ContentPlaceHolderID="cphCenter" Runat="Server"> 
<style type="text/css"> 
    #wait { 
    position:absolute; 
    top:0px; 
    right:10px; 
    width:200px; 
    z-index:1000; 
    vertical-align:middle; 
    text-align:center; 
    background: #febf00; 
    display:none; 
} 
</style> 
<script src='<%= ResolveUrl("../../../../Scripts/jquery-1.4.1.js") %>' type="text/javascript"></script> 
<script type="text/javascript"> 
    $(function() { 
     $('#wait') 
     .ajaxStart(function() { $(this).show(); }) 
     .ajaxStop(function() { $(this).hide(); }); 

     $('input:button').live('click', loadData); 
    }); 

    function loadData() { 
     $.get("Source.aspx", {}, 
     function (data) { 
      $('#a1').html(data); 
     }, 
     "html"); 

     alert('This alert is asynchronous (1st)'); 

     $.get("Source2.aspx", {}, 
     function (data) { 
      $('#a2').html(data); 
     }, 
     "html"); 

     alert('This alert is asynchronous (2nd)'); 
    } 
</script> 
<div id="test13"> 
    <input type="button" id="btnLoad" value="Load" /> 
</div> 
<div id="a1"></div> 
<div id="a2"></div> 
<div id="wait">Please wait <img src="ajax-loading.gif" /></div> 
</asp:Content> 

然后我有2个aspx页面,Source1.aspx和Source2.aspx。它们只包含一个gridDataView和OnLoad事件中的少量代码。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Source.aspx.cs" Inherits="Solutions_CashCenter_StockManagement_Test_Source" %> 
<form runat="server"> 
<cc1:GridDataView runat="server" ID="gridTest" > 
</cc1:GridDataView> 
<asp:SqlDataSource ID="dsTest" runat="server" ConnectionString="<%$ ConnectionStrings:WebPortalConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:WebPortalConnectionString.ProviderName %>"> 
</asp:SqlDataSource> 
</form> 

服务器端:

Thread.Sleep(5000); 
dsTest.SelectCommand = "SELECT 'test1', 'test2', 'test3'"; 
this.gridTest.DataSourceID = "dsTest"; 
this.gridTest.DataBind(); 

与同为第二页,但与网格不同的数据。

我有结果是,这两个警报发生一次,但网格是一个加载后一个,那就是5秒后第一次出现网格,然后接连5秒第二个appers。 这就是服务器并没有实际地同时处理它们。

我在做什么错了,我应该如何组织所有的工作,我需要什么?

回答

4

发生这种情况是因为会话锁定了页面读取。
因此,当一个页面加载时,会话锁定所有其余的请求,直到完成并发送页面。

为了使它工作,你需要乙醚禁用不是由默认的会话锁定对这个页面的会议,醚使用的处理程序。

相关问题:

Trying to make Web Method Asynchronous
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely

+0

你是什么意思下的 “页面加载”?我没有加载页面,但做了一个Ajax请求 –

+0

@VitaliiKorsakov ajax请求是在客户端上异步加载页面。你仍然加载一个页面 - 我说的是在服务器上处理 - 而不是在客户端浏览器上。由于会话锁定,服务器上的处理被阻止。 – Aristos

+0

@VitaliiKorsakov为此页面禁用会话,并且您看到它按预期工作。 – Aristos