Je pense que cela devrait fonctionner, mais vous devrez le personnaliser un peu. Je fais quelque chose de très similaire, mais j'ai dû abandonner l'utilisation de la multview dans updatepanel en raison d'un problème avec un contrôle tiers que j'avais intégré à l'intérieur.
Vous devrez ajouter une référence à votre page maître dans votre fichier aspx en utilisant la balise asp.net ci-dessous. Et aussi, exposer le scriptmanager comme un contrôle public dans votre page maître afin que vous puissiez lui câbler un événement. Dans le code de conception/html de votre page: mettez à jour le chemin virtuel vers votre maître ou utilisez le type pour assigner la référence de type.
<%@ MasterType VirtualPath="~/MasterPage.master" %>
Dans le cas d'initialisation de votre page:
public void Page_Init(object sender, EventArgs e)
{
// can be done at MasterPage level if you like
this.Master.ScriptManager.EnableHistory = true;
}
Ensuite, dans le cas de chargement de votre page:
protected void Page_Load(object sender, EventArgs e)
{
this.Master.ScriptManager.Navigate +=
new EventHandler<HistoryEventArgs>(ScriptManager_Navigate);
if (!this.IsPostBack && !ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
// load default multiview index
}
}
Ensuite, ajoutez ce nouveau gestionnaire d'événements à votre page. Ceci appelle l'article "myArgs", vous devriez utiliser quelque chose d'un peu plus intuitif pour votre contenu. Dans ma mise en œuvre, j'ai une série d'éléments (comme l'ordre de tri, l'index de la page, etc. séparés par des delims, puis les décomposons et les assignons).
protected void ScriptManager_Navigate(object sender, HistoryEventArgs e)
{
if (!string.IsNullOrEmpty(e.State["myArgs"]))
{
string args = e.State["myArgs"];
SetMyArgs(args);
}
else
{
// just load default
}
}
Les arguments seront l'index multivue. Ce ne sont que des fonctions d'aide que j'utilise. Si index est le seul élément qui vous intéresse, vous pouvez simplement ajouter ces appels aux méthodes principales.
private void SetMyArgs(string args)
{
int myIndex = int.Parse(args);
// set multiview index here?
}
private string GetMyArgs()
{
return myMultiview.ActiveIndex.ToString();
}
Ensuite, lorsque vous déclenchez l'événement qui change l'index actif, ajoutez à ces méthodes
if (this.IsAsync)
{
this.Master.ScriptManager.AddHistoryPoint("myArgs", GetMyArgs());
}
Espérons que cela vous donne un peu d'aide.
Salut Jim, Merci beaucoup, il fonctionne maintenant comme il se doit! Josi –