【问题标题】:ASP.Net: How to add rows to a repeater using DOM/Javascript?ASP.Net:如何使用 DOM/Javascript 向转发器添加行?
【发布时间】:2009-01-14 06:58:02
【问题描述】:
我知道 asp.net 转发器没有客户端对象模型,我们一直致力于提高许多具有转发器/网格视图的页面的性能,这些页面具有通过服务器端代码向它们添加行的功能。
我们已经使用更新面板来 ajaxify 将行添加到转发器/网格视图的功能,但是服务器跳闸和在浏览器上渲染所花费的时间是不可接受的。
是否有某种方法可以在客户端完成此操作,以提高向转发器/网格视图添加行的性能。我们使用的是 Asp.net 2.0
【问题讨论】:
标签:
asp.net
ajax
gridview
updatepanel
repeater
【解决方案1】:
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
}
}
你只需要塞住这些洞!
【解决方案2】:
我发现 Repeater 控件没有可用于执行客户端操作(例如添加行和内容)的 DOM,我唯一的简单方法(由于某些限制)是使用而是使用 GridView 控件,然后使用它的 DOM,这就是我最终所做的。