【发布时间】:2009-04-01 11:50:18
【问题描述】:
我们有一个非常慢的带有中继器的 ASP.NET 页面。它很慢,因为大部分处理都是在转发器的 ItemDataBound 事件中完成的。所有这些处理只会在每行中显示 2 个总数。
要增加吞吐量,最好在没有 ItemDataBound 事件且没有 2 个总数的情况下加载转发器。 而不是在浏览器中加载页面时,可以从每一行进行 AJAX 调用,并且可以异步显示总计。
你能指出任何实现这种解决方案的代码示例吗?
谢谢!
【问题讨论】:
我们有一个非常慢的带有中继器的 ASP.NET 页面。它很慢,因为大部分处理都是在转发器的 ItemDataBound 事件中完成的。所有这些处理只会在每行中显示 2 个总数。
要增加吞吐量,最好在没有 ItemDataBound 事件且没有 2 个总数的情况下加载转发器。 而不是在浏览器中加载页面时,可以从每一行进行 AJAX 调用,并且可以异步显示总计。
你能指出任何实现这种解决方案的代码示例吗?
谢谢!
【问题讨论】:
确实,jQuery.ajax() 调用在这里是一个不错的选择。您可以使用它来调用代码隐藏中定义的WebMethod
至于服务器端计算,您有几个选择:
将执行计算所需的值嵌入到每行中的 HiddenFields 中,并通过 ajax() 调用中的参数将它们传递给您的 Web 方法。
使用与上述类似的方法 (HiddenField) 为行传递唯一 ID,并根据该 ID 进行计算。
至于代码,它可能看起来像这样:
$('span.show-total').hover(
function(){
// Show panel here
$.ajax({
type: "POST",
url: "PageName.aspx/MethodName",
data: '{"uniqueId":"' + $(this).find('input[id$=YourHiddenFieldID]').val() + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Do something interesting here.
alert(msg.d);
}
});
},
function(){
// Hide panel here
}
);
【讨论】: