我知道 asp.net 转发器没有客户端对象模型,我们一直致力于提高许多具有转发器/网格视图的页面的性能,这些页面具有通过服务器端代码向它们添加行的功能。
我们已经使用更新面板来 ajaxify 将行添加到转发器/网格视图的功能,但是服务器跳闸和在浏览器上渲染所花费的时间是不可接受的。
有什么方法可以在客户端完成,以提高向转发器/网格视图添加行的性能。我们正在使用 Asp.net 2.0
我知道 asp.net 转发器没有客户端对象模型,我们一直致力于提高许多具有转发器/网格视图的页面的性能,这些页面具有通过服务器端代码向它们添加行的功能。
我们已经使用更新面板来 ajaxify 将行添加到转发器/网格视图的功能,但是服务器跳闸和在浏览器上渲染所花费的时间是不可接受的。
有什么方法可以在客户端完成,以提高向转发器/网格视图添加行的性能。我们正在使用 Asp.net 2.0
UpdatePanels 仍然执行整页回发,然后简单地更新面板内的任何内容。这就是你减速的来源。
至于使用 AJAX 来加快速度,您将希望使用直接 AJAX 调用来仅请求您需要的数据。您可以使用 ASP.NET AJAX 做到这一点。
在 page_load 事件处理程序中,注册您的 AJAX。(VB.NET)
Ajax.Utility.RegisterTypeForAJAX(GetType(ThisPageClass))
然后,创建一个可由 AJAX 访问的函数,如下所示:
<Ajax.AjaxMethod()> _
Public Function GetNewRows() As String
''//do stuff
Return jsonObj
End Function
然后,在客户端,您可以这样调用它:
ThisPageClass.GetNewRows(someCallbackFunction);
function someCallbackFunction(result) {
var json = ParseJSON(result.value);
for(var i=0; i<json.length; i++) {
// do whatever
}
}
你只需要塞住这些洞!
我发现Repeater控件没有可用于执行客户端操作(例如添加行和内容)的DOM,唯一简单的出路(由于某些限制)是使用GridView控件代替然后使用它的 DOM,这就是我最终所做的。