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

ASP.NET Discussion :

Attributs et IsPostBack problème


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut Attributs et IsPostBack problème
    Bonjour,

    J'ai une listbox pour laquelle j'ai l'impression qu'un attribut que j'ajoute à chaque item n'est pas conservé lors du IsPostBack:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if (!IsPostBack)
    {
            //  First load
            List<OlrTemplate> olrTemplates = new List<OlrTemplate>();
    
            olrTemplates = templateDAO.GetAllTemplates();
            foreach (OlrTemplate template in olrTemplates)
            {
                    ListItem item = new ListItem(template.getFullId() + " " + template.getFullName(), template.id.ToString());
                    // Ajout de mon attribut perso
                    item.Attributes.Add("_status", Convert.ToInt32(template.status).ToString());
                    lbTemplate.Items.Add(item);
             }
    }
    si je regarde le source de ma page au premier chargement j'ai bien mon attribut sur chaque item:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select size="1" name="xxxxxx" onchange="javascript:setTimeout('__doPostBack(\'xxxxxxxxx\',\'\')', 0)" id="xxxxxxxxxx">
    	<option selected="selected" value="1" _status="0">Item 1</option>
    	<option value="2" _status="0">Item 2</option>
    	<option value="3" _status="1">Item 3</option>
    </select>
    Si je change l'item de ma listbox la page est rappelée en !IsPostBack et mes items ont perdu mon attribut perso _status:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select size="1" name="xxxxxx" onchange="javascript:setTimeout('__doPostBack(\'xxxxxxxxx\',\'\')', 0)" id="xxxxxxxxxx">
    	<option value="1">Item 1</option>
    	<option selected="selected" value="2">Item 2</option>
    	<option value="3">Item 3</option>
    </select>
    Est-ce normal ?

    Par avance merci pour votre aide

  2. #2
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Par défaut
    ton attribut _status est un attribut "particulier" en ce sens qu'il n'est pas prévu dans la ListBox (ou dropdownlist).
    Du coup le ViewState ne l'enregistre pas.
    Et du coup quand tu reviens dans la page... il n'a plus l'info.

    Seule solution :
    - faire un dropdownlist maison qui hérite du dropdonwlist et qui propose ce nouvel attribut et le gère dans le ViewState.

    - stocker manuellement toi même dans le ViewState les infos qu'il te faut ; mais reconstruire à chaque fois ton ListBox... Donc dans le ViewState, je stockerai l'élément sélectionné perso...
    Mais bon bref, à voir.

  3. #3
    Membre très actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Par défaut
    salut

    essais avec AppendDataBoundItems="True" dans ton code html

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par nashouille Voir le message
    salut

    essais avec AppendDataBoundItems="True" dans ton code html
    Ca n'a rien à voir... ça sert à ce que le binding ajoute les éléments à la liste au lieu de remplacer ceux qui y sont déjà

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut
    Merci de m'avoir confirmé que les attributs persos n'étaient pas conservés. C'est pas génial car j'ai souvent recours à eux...

    Je vais peut-être mettre tout cela dans l'attribut value en séparant mes valeurs avec un caractère séparateur spécifique. Je redécomposerais quand nécessaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <option value="3|0">Item 1</options>
    Merci de votre aide.

Discussions similaires

  1. [XSLT ]<xsl:attribute name="href"> --> problème
    Par vatzyaya dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/10/2007, 09h44
  2. Réponses: 1
    Dernier message: 25/11/2005, 20h40
  3. [css]problème d'attribution de classe dans deux listes
    Par Mitaka dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/11/2005, 18h05
  4. Problème d'attribut de lecture seule sur des dossiers
    Par Redbull dans le forum Sécurité
    Réponses: 2
    Dernier message: 09/08/2005, 09h52
  5. [html][xsl]Problème valeur attribut html
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/04/2005, 13h37

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