Déterminez si et quel postback partiel s'est produit dans pageLoad () avec JavaScript dans .NET

Comme je l'ai compris, les mises à jour partielles de la page avec ASP.NET AJAX provoquent l'activation du gestionnaire d'événements JavaScriptLink ().

Ma question: Existe-t-il une manière générique de déterminer dans JavaScript dans la fonction pageLoad () …

I) Si le postback était une mise à jour partielle de la page ou non.

Ii) Dans l'affirmative, quel panel a été mis à jour.

Ma application utilise une combinaison de .NET UpdatePanels & Telerik RadAjaxPanels. Je suis à la recherche d'une solution générique (de préférence JavaScript) qui ne nécessite pas que je spécifie une fonction de rappel unique côté client pour chaque panneau, ni définir un drapeau à partir de chaque gestionnaire d'événements post-retour pour s'identifier au client.

Pour déterminer si le postback était une mise à jour partielle ou non, vous pouvez utiliser ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack . Voici un exemple:

 protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack) { // get a reference to ScriptManager and check if we have a partial postback if (ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack) { // partial (asynchronous) postback occured // insert Ajax custom logic here } else { // regular full page postback occured // custom logic accordingly } } } 

Et pour obtenir le Panneau de mise à jour qui a provoqué le PostBack, vous pouvez consulter ScriptManager.GetCurrent(Page).UniqueID et l'analyser. Voici un exemple de cela:

 public string GetAsyncPostBackControlID() { string smUniqueId = ScriptManager.GetCurrent(Page).UniqueID; string smFieldValue = Request.Form[smUniqueId]; if (!String.IsNullOrEmpty(smFieldValue) && smFieldValue.Contains("|")) { return smFieldValue.Split('|')[0]; } return String.Empty; } 

Les références: