Comment puis-je inscrire Historique entrées (Retour / Avance) dans un Multiview (sur l'indice actif changé)

voix
0

J'utilise un panneau de mise à jour pour avoir une partie de ma page mise à jour de manière asynchrone. Sa navigation doit être enregistré lorsqu'un Multiview change son index actif.

Par exemple, lorsque la page charges, l'indice actif Multiview = 0. Lorsque l'utilisateur clique sur un lien, je montre le contenu de l'affichage index 1.

Il est vraiment important de permettre à l'utilisateur de revenir en arrière et en avant en utilisant l'historique du navigateur.

Le ScriptManagerse trouve dans une page principale et a sa EnableHistorypropriété est définie sur True.

Quelqu'un at-il mis en œuvre lorsque le travail avec Multiview?

Créé 26/08/2009 à 22:55
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

Je pense que cela devrait fonctionner, mais vous aurez besoin de le personnaliser un peu. Je fais quelque chose de très similaire, mais je devais éloigner d'utiliser le MULTVIEW dans les UpdatePanel en raison d'un problème avec un contrôle tiers, je l'avais intégré en son sein.

Vous aurez besoin d'ajouter une référence à votre page principale dans votre fichier ASPX en utilisant la balise asp.net ci-dessous. Et aussi, exposer le ScriptManager comme contrôle public dans la page principale de sorte que vous pouvez câbler un événement à elle.

Dans la conception / code html de votre page: Mettre à jour le chemin d'accès virtuel à votre maître ou d'utiliser le type d'attribuer la référence du 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. Ce nom le poste « myArgs », vous devriez utiliser quelque chose d'un peu plus intuitive pour votre contenu. Dans ma mise en œuvre, j'ai une série d'éléments (comme ordre de tri, index de page, etc. séparés par delims puis les briser et les cédez).

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 args seront l'indice de MultiView. Ce sont des fonctions simplement auxiliaires que j'utilise. Si l'index est le seul élément que vous aimez, vous pouvez simplement en ligne ces appels vers les principales méthodes.

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.

Créé 27/08/2009 à 00:40
source utilisateur

voix
0

Vous ne devriez pas utiliser this.IsAsyncmais plutôt ScriptManager.GetCurrent(Page).IsInAsyncPostBack(ou dans votre cas, this.Master.ScriptManager.IsInAsyncPostBack).

Créé 13/03/2013 à 11:18
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more