これは、それにもかかわらず、これまでで最もエレガントなソリューションから、おそらくですが、その解決策:カスタムコントロールを登録する必要があります。もちろん、
<uc:UpdatePanel OnUpdateCompleteClientScript="alert('update complete');">
<!-- stuff in here -->
</uc:UpdatePanel>
:
public class UpdatePanel : System.Web.UI.UpdatePanel
{
/// <summary>
/// Javascript to be run when the updatepanel has completed updating
/// </summary>
[Description("Javascript to be run when the updatepanel has completed updating"),
Category("Values"),
DefaultValue(null),
Browsable(true)]
public string OnUpdateCompleteClientScript
{
get
{
return (string)ViewState["OnUpdateCompleteClientScript"];
}
set
{
ViewState["OnUpdateCompleteClientScript"] = value;
}
}
protected override void OnPreRender(System.EventArgs e)
{
base.OnPreRender(e);
if(!string.IsNullOrEmpty(this.OnUpdateCompleteClientScript))
Page.ClientScript.RegisterStartupScript(this.GetType(), this.ClientID, string.Concat("Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args){for(var panelId in sender._updatePanelClientIDs){if(sender._updatePanelClientIDs[panelId] == '", this.ClientID, "'){", this.OnUpdateCompleteClientScript, "}}});"), true);
}
}
はこのようにそれを使用しますyoureのwebconfigやページでこれを使用してください。
編集:また、あなたは
function pageLoad(sender, args) {
...
}
pageLoad
内に置く代わりに、$(document).ready()
の内側にあなたのjQueryのコードを置くことjquery.live?
あなたの答えをありがとう。 クライアントサイドのpageLoadイベントがあることはわかりませんでした。問題が解決しました。 :) – tsbnunes
私はそれを知っていませんどちらか、便利!私はこれがページ上のすべてのUPで発生すると思われることを念頭に置いてください。具体的には私のclientidフィルタが必要です –
+1 FTW!私はまた、これが存在することを知らなかったし、私の問題を解決するために私が探していたのはまさにそれでした! Big ups @Russ Cam! – longda