IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Ajouter des view via code behind


Sujet :

C#

  1. #1
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut Ajouter des view via code behind
    Bonjour,

    Le contexte :

    J'ai ma page ou il n'y a qu'un multiview et 3 boutons suivant, précédent et ajouter.

    Je cherche à faire précédent :

    mamultiview.ActiveViewIndex--;

    Je fais suivant :

    mamultiview.ActiveViewIndex ++;


    Et ajouter (à chaque clique sur ajouter, créer une vue ses composants et l'ajotuer) :

    Je crée une nouvelle view, ses composants, j'associe les composants à ma view, j'ajoute ma vue à ma multiview
    et je fais la fin un mamultiview.SetActiveView(maview)

    Le problème que j'ai (et qui est courant apparement mais je n'ai pas trouvé de solution) est au niveau de l'ActiveViewIndex :

    ActiveViewIndex est défini à '3'. Il doit être inférieur au nombre actuel de contrôles View '3'. Dans le cadre des vues ajoutées de manière dynamique, assurez-vous qu'elles sont ajoutées avant ou à l'intérieur de l'événement Page_PreInit.
    Nom du paramètre : value
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.ArgumentOutOfRangeException: ActiveViewIndex est défini à '3'. Il doit être inférieur au nombre actuel de contrôles View '3'. Dans le cadre des vues ajoutées de manière dynamique, assurez-vous qu'elles sont ajoutées avant ou à l'intérieur de l'événement Page_PreInit.
    Nom du paramètre : value
    Que ca soit 3 ou 1 ou autre j'ai toujours le même problème. Et concernant l'évènement Page_PreInit connait pas. Quand je navigue parmi mes view existantes no soucis. Dès que je passe par Ajouter, je vois ma nouvelle view créée à l'exécution. Mais dès que je veux faire précédente, suivante ou en ajouter une nouvelle j'ai ce zouli message (doit y avoir un problème d'algo ou je sais pas quoi avec l'ActiveViewIndex) et vue que l'ajout est dynamique je ne connais bien évidement pas le nombre de vue au départ.

    Si vous avez des suggestions...ou un script perso sur l'ajout de view via le code (hors tous ceux du net que j'ai visité) je suis preneuse

    d'avance
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    pour Page_PreInit, c'est un evenement de la page qui est au tout début de son traitement (bien avant le page load)

    tu dois la rajouter toi même en collant ce bout de code dans le code de ta page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void Page_PreInit(object sender, EventArgs e)
    {
     //ton code
    }
    ps: à vérifier pour les arguments mais je pense que c'est cela



    pour tes problèmes. le outofbounds est on ne peut plus clair et l'autre vient PEUT-ETRE du fait que lorsque tu ajoutes une vue, tu ne met pas à jour l'ActiveIndex.
    Il faudrait regarder à quelle position se rajoute la dernière vue et si le currentIndex change après l'ajout

    vue que l'ajout est dynamique je ne connais bien évidement pas le nombre de vue au départ.
    c'est pas rangé dans une collection toutes ses vues? un objet qui aurait la propriété Length? t'as le code pour les récupérer au début?
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  3. #3
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Bonjour,

    Pour le Page_PreInit j'ai aussi tenté avec ces arguments la. Mais c'est tordu, mon ajout se fait au OnClick du bouton et en gros l'ajout de ma vue doit se faire dans ce PreInit, mais une vue n'est pas forcément ajoutée à chaque load d'une page c'est pour cela que ca m'a embrouillé la tete.

    Pour l'ativeViewIndex, d'après ce que j'ai vu, les views s'ajoutent à la fin de la collection. Or celle que j'ajoute existe bien puisque je la vois, je peux l'afficher et tout. Mais elle n'est pas comptabilisé dans la collection a priori et je ne sais po pourquoi je pensais qu'un add(maview) à ma multiview le ferait pour moi.. .a priori non j'ai du loupé un détail

    Pour la collection j'ai trouvé que ca :

    Views : Gets the collection of View controls in the MultiView control.
    Mais je n'ai pas encore vu une liste de viw ou quoi que ce soit dans une collection quelconque que je pourrais afficher le temps de mon dev

    En tout cas je peux les compter mais je sais qu'elle n'y est pas alors que je la vois, que je peux l'activer, etc.



    Citation Envoyé par Louis-Guillaume Morand Voir le message
    pour tes problèmes. le outofbounds est on ne peut plus clair et l'autre vient PEUT-ETRE du fait que lorsque tu ajoutes une vue, tu ne met pas à jour l'ActiveIndex.
    Il faudrait regarder à quelle position se rajoute la dernière vue et si le currentIndex change après l'ajout

    c'est pas rangé dans une collection toutes ses vues? un objet qui aurait la propriété Length? t'as le code pour les récupérer au début?
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    je viens de tester, de chercher sur les sites anglais et allemand, tout le monde a le même soucis et les solutions ne correspondent pas à ton soucis ou alors les gens n'ont pas de solution du tout .

    Effectivement, ca rajoute la multiview mais ca n'update pas son viewstate donc au prochain postback, la longueur de collection est fausse.
    La seule solution c'est le Pre_Init sauf que comme tu le soulèves, on veut pas ajouter à chaque fois mais surtout à ce niveau là, on ne sait pas detecter le contrôle sender, difficile de faire un ajout selectif :/



    c'est bien Views qui m'intéressait, surtout la propriété Count qui est à jour après l'ajout de la nouvelle vue mais qui n'est plus à jour au moindre postback.
    c'est le fait que le multiview n'update pas son viewstate en live.
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  5. #5
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    C'est ce que j'ai vu aussi sur le net...pas mal on ce problème mais aucune solution plus explicite que les conseils du message d'erreurs n'est donnée. Je crois que je suis coincée

    quand on connait le nombre de view à l'avance aucun problème mais en dynamique...apparement pas possible
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    je crois que c'est même pas une simple question de Views mais de collection non mis à jour entre deux postbacks de la collection même. car l'exception se declenche avant même l'indexOutOfBound ou l'autre erreur, ca arrive pendant le Post_Init.


    je vois bien une bidouille très cochonne en sauvegardant dans le viewstate manuellement après l'ajout et au Pre_Init, relire ce viewstate pour recréer à chaque postback les vues. Le problème c'est que l'on risque de perdre les informations de la vue (un controle textbox avec du texte saisi par exemple)
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

Discussions similaires

  1. Problème ajout WebPart via code behind sur une page d'une feature
    Par atfximen dans le forum Développement Sharepoint
    Réponses: 6
    Dernier message: 23/02/2012, 10h28
  2. ajouter des extraits de code personnalisés
    Par adel.87 dans le forum Visual Studio
    Réponses: 2
    Dernier message: 09/10/2008, 22h13
  3. Ajouter des commentaire à vos codes-sources
    Par Zaki_SDwin dans le forum Contribuez
    Réponses: 6
    Dernier message: 17/06/2008, 00h38
  4. Comment ajouter des décimales via Delphi ?
    Par savoir dans le forum Débuter
    Réponses: 5
    Dernier message: 21/04/2008, 13h18
  5. "Masquer les Détails" des groupes via code
    Par Many31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/01/2008, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo