我通过调用类似的方法使用Javscript刷新UpdatePanel:
reloadDropDown = function (newValue)
{
__doPostBack("DropDown1", "");
selectNewValueInDropDown(newValue);
}
我的UpdatePanel内部是<select>
框,我需要选择带有 newValue 的<option>
。我的问题是我的selectNewValueInDropDown
方法是在__doPostBack
完成之前调用的。有没有办法在调用我的selectNewValueInDropDown
方法之前“等待”回发?
答案 0 :(得分:11)
为了使我的评论更具体,这里的想法是:
reloadDropDown = function (newValue)
{
var requestManager = Sys.WebForms.PageRequestManager.getInstance();
function EndRequestHandler(sender, args) {
// Here's where you get to run your code!
selectNewValueInDropDown(newValue);
requestManager.remove_endRequest(EndRequestHandler);
}
requestManager.add_endRequest(EndRequestHandler);
__doPostBack("DropDown1", "");
}
当然,您可能希望处理两个请求重叠的竞争条件。要处理这个问题,您需要跟踪哪个处理程序适合哪个请求。您可以在服务器端使用类似ScriptManager.RegisterDataItem
的内容,或致电args.get_panelsUpdated()
并检查您感兴趣的面板是否已更新。
答案 1 :(得分:6)
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args)
{
//
}
function EndRequestHandler(sender, args)
{
//request is done
}