gpt4 book ai didi

c# - 检测 UpdatePanel 是否受到 Update() 方法调用的影响

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:27 25 4
gpt4 key购买 nike

我在同一个页面中使用多个 UpdatePanel,使用 UpdateMode = Conditional ,并且我正在尝试找到一种干净的方法来仅执行与将要更新的 UpdatePanel 相关的代码。

所以,当我调用 __doPostBack 时从 JS,我能够在后面的代码中检测到使用 Request["__EVENTTARGET"] 要求刷新的 UpdatePanel 的名称。 (这给了我 UpdatePanel 的 ClientID)。

但是当我调用 UpdatePanel1.Update()方法(从服务器端),是否有内置方法可以知道更新面板是否即将更新?

最佳答案

我在这里张贴给自己我的临时(?)答案。

因为显然没有办法检测 UpdatePanel 是否正在更新(当 UpdatePanel 被后面的代码更新时),我创建了一个处理更新的类,并将一些数据放入session,因此,同一个类将能够判断 UpdatePanel 是否正在更新。因此,我不再直接调用 UpdatePanel.Update(),而是调用 UpdatePanelManager.RegisterToUpdate()

bool isUpdating() 方法能够判断 UpdatePanel 是否正在更新,并且可以使用 HttpContext.Current.Request["__EVENTTARGET"通过 Javascript 自动判断 updatePanel 是否正在更新]

注意:isUpdating()需要在OnPreRender页面事件中使用。

public static class UpdatePanelManager
{

private const string SessionName = "UpdatePanelRefresh";

public static void RegisterToUpdate(System.Web.UI.UpdatePanel updatePanel)
{
updatePanel.Update();
if (HttpContext.Current.Session[SessionName] == null)
{
HttpContext.Current.Session[SessionName] = new List<string>();
}
((List<string>)HttpContext.Current.Session[SessionName]).Add(updatePanel.ClientID);

}

public static bool IsUpdating(System.Web.UI.UpdatePanel updatePanel)
{
bool output = false;

// check if there is a JavaScript update request
if (HttpContext.Current.Request["__EVENTTARGET"] == updatePanel.ClientID)
output = true;

// check if there is a code behind update request
if (HttpContext.Current.Session[SessionName] != null
&& ((List<string>)HttpContext.Current.Session[SessionName]).Contains(updatePanel.ClientID))
{
output = true;
((List<string>)HttpContext.Current.Session[SessionName]).Remove(updatePanel.ClientID);
}

return output;

}

public static bool IsUpdatingOrPageLoading(System.Web.UI.UpdatePanel updatePanel, System.Web.UI.Page page)
{
bool output = false;

if (!page.IsPostBack || IsUpdating(updatePanel))
output = true;

return output;

}


}

关于c# - 检测 UpdatePanel 是否受到 Update() 方法调用的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29703175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com