2

背景:我正在使用 JSLink 修改 SharePoint 列表 Web 部件。我还添加了 jQuery 和 jQuery-UI 以使列表项显示为 jQuery Accordion。效果很好,只是我还需要在web部件上实现ajax自动刷新,每60秒刷新一次内容。

问题:当 Web 部件刷新时,jquery 代码恢复 - 项目不再以手风琴模式显示。我可以打开浏览器控制台并手动键入 jquery 代码,例如,$(".selector").accordion();它工作正常。这让我觉得我需要在每个 web 部件自动刷新完成后找到一种方法来调用 jquery 代码。

问题:那么,是否有 javascript 事件或方法可以找出我的 webpart 上何时触发自动刷新,以便之后我可以再次调用我的 jquery 手风琴?还有什么我可能会丢失的吗?

谢谢你的时间!

4

2 回答 2

1

答案是使用以下代码:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(MyFunction); 

function MyFunction() { 
    //do something here; 
}

感谢@Thriggle

参考: https ://msdn.microsoft.com/en-us/library/bb311028.aspx https://www.daniweb.com/programming/web-development/threads/247263/ajax-postback-after-endrequest

于 2015-10-08T19:24:14.623 回答
0

_onFormSubmit我相信您可以通过覆盖对象当前实例的方法将自己的代码或函数调用插入到回调链中Sys.WebForms.PageRequestManager

Sys.WebForms.PageRequestManager.getInstance()._onFormSubmit = function(i){

    Sys.WebForms.PageRequestManager.prototype._onFormSubmit.call(this,i);

    alert("Refreshing the data..."); // -- your code or function call here

};

当我在 F12 控制台中在具有 25 秒刷新的列表视图的页面上运行上述代码时,我开始每 25 秒看到一次“刷新数据...”弹出窗口,但我没有用比这更复杂的东西测试它。

于 2015-10-08T15:55:33.170 回答