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: