gpt4 book ai didi

javascript - 如何判断 JavaScript 是否导致我的更新面板更新?

转载 作者:行者123 更新时间:2023-11-30 06:36:56 29 4
gpt4 key购买 nike

我使用以下 javascript 代码在页面加载后调用我的更新面板的更新:

<script type="text/javascript">
function pageLoad(objSender, args) {
Sys.WebForms.PageRequestManager.getInstance()._doPostBack('updtPnlAccessoriesPanel', 'updtPnlAccessoriesPanel');
}
</script>

我不希望更新面板(其中包含用户控件)在页面加载并显示之前触发。这将允许它异步更新更新面板(及其用户控件)。

因此,在用户控件的 page_load 中,我想告诉它在初始页面加载期间忽略任何内容,并且仅在页面已经为用户加载后由 javascript 调用时才执行它的工作。在此用户控件中完成的工作需要额外几秒钟,我不希望它减慢初始页面的加载速度。

有什么想法吗?

谢谢! :)

最佳答案

解决方案很简单 - 只需使用 IsPostBack 即可在页面加载后完成工作,因为当您使用 javascript 触发 UpdatePanel 时,您会向服务器发回一个帖子。所以这样做:

protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
// now do your work
}
}

为了使其更高级,您甚至可以简单地检查 PostBack 是否来自该面板。我为此使用了一个检查女巫 UpdatePanel 是否触发事件的函数,因此我们的代码如下:

protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack && IsUpdatePanelInRendering(Page, upUpdatePanelId))
{
// run the code for update panel 1, me
// ...
}
}

IsUpdatePanelInRendering 在哪里:

public static bool IsUpdatePanelInRendering(Page page, UpdatePanel panel)
{
Debug.Assert(HttpContext.Current != null, "Where are you called ? HttpContext.Current is null ");
Debug.Assert(HttpContext.Current.Request != null, "Where are you called HttpContext.Current.Request is null ");

// if not post back, let it render
if (false == page.IsPostBack)
{
return true;
}
else
{
try
{
// or else check if need to be update
ScriptManager sm = ScriptManager.GetCurrent(page);

if (sm != null && sm.IsInAsyncPostBack)
{
Debug.Assert(HttpContext.Current.Request.Form != null, "Why forms are null ?");

string smFormValue = HttpContext.Current.Request.Form[sm.UniqueID];

if (!string.IsNullOrEmpty(smFormValue))
{
string[] uIDs = smFormValue.Split("|".ToCharArray());
if (uIDs.Length == 2)
{
if (!uIDs[0].Equals(panel.UniqueID, StringComparison.InvariantCultureIgnoreCase))
{
return false;
}
}
}
}
}
catch (Exception x)
{
Debug.Fail("Ops, what we lost here ?");
}

return true;
}
}

关于javascript - 如何判断 JavaScript 是否导致我的更新面板更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13887682/

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