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 :

Problème avec Eval()


Sujet :

ASP.NET

  1. #1
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut Problème avec Eval()
    Bonjour,

    J'ai besoin de votre aide car j'ai un soucis que je n'arrive pas à résoudre.

    Voila j'ai un asp repeater dans lequel j'ai une checkbox, j'utilise pas la checkbox de base d'asp.net mais une chechbox a laquelle j'ai ajouté une propriété.

    Voici le code de ma checkbox:

    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
    16
     
    namespace RouteInn.Controls
    {
        public class RouteInnCheckBox : CheckBox
        {
            /// <summary>
            /// Chemin du fichier à supprimer
            /// </summary>
            private string _Path;
            public string Path
            {
                get { return _Path; }
                set { _Path = value; }
            }
        }
    }
    Mon asp repeater:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
                        <asp:Repeater ID="Repeater1" runat="server" Visible="true">
                            <ItemTemplate>
                                <div style="display: inline; float: left; padding: 5px 5px 5px 5px">
                                    <div style="z-index: 3; position: absolute">
                                        <cc6:routeinncheckbox path='<%# Eval("Path") %>' id="CheckBox1" runat="server" />
                                    </div>
                                    <a href="<%# Eval("Path") %>" onclick="return hs.expand(this)" title="">
                                        <img alt="" src="<%# Eval("Path") %>" width="150px" height="150px" />
                                    </a>
                                </div>
                            </ItemTemplate>
                        </asp:Repeater>
    Mon problème provient de cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    path='<%# Eval("Path") %>'
    En effet ma propriété "path" est toujours vide, alors que pour le reste tout marche comme sur des roulettes.

    Merci de votre aide.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    T'as bien un champ Path dans ta datasource?

  3. #3
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Oui j'ai oublié de spécifier mais je bind par le code voici mon code de teste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            public class Teste
            {
                public string Path { get; set; }
            }
    Je construit une List<Teste> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            public List<Teste> m = new List<Teste>()
                {
                    new Teste() { Path = "833566997.gif" },
                    new Teste() { Path = "Asynchronous file copy.png" }
                }
    Et je bind

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                 this.Repeater1.DataSource = m.AsEnumerable();
                        this.Repeater1.DataBind();
    Pour plus de clarté mon source complète:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
        public partial class _Default : System.Web.UI.Page
        {
            public class Teste
            {
                public string Path { get; set; }
                public string ID { get; set; }
            }
            public List<Teste> m = new List<Teste>()
                {
                    new Teste() { Path = "833566997.gif" },
                    new Teste() { Path = "Asynchronous file copy.png" }
                };
            public List<Teste> m1 = new List<Teste>()
                {
                    new Teste() { Path = "mima.jpg"},
                    new Teste() { Path = "Asynchronous file copy.png" }
                };
            protected void Page_Load(object sender, EventArgs e)
            {
            }
            protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                this.Repeater1.DataSource = null;
                this.Repeater1.DataBind();
     
                switch (Convert.ToInt32(this.DropDownList1.SelectedValue))
                {
                    case 1:
                        this.Repeater1.DataSource = m.AsEnumerable();
                        this.Repeater1.DataBind();
                        break;
                    case 2:
                        this.Repeater1.DataSource = m1.AsEnumerable();
                        this.Repeater1.DataBind();
                        break;
                    default:
                        break;
                }
            }
            protected void Button1_Click(object sender, EventArgs e)
            {
                foreach (RepeaterItem item in this.Repeater1.Items)
                {
                    item.Controls.OfType<RouteInnCheckBox>().ToList()
                        .ForEach(c =>
                            {
                                if (c.Checked)
                                    this.Literal1.Text += c.Path + " <br />";
                            });
                }
            }
        }

  4. #4
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    essaye juste this.Repeater1.DataSource = m;

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 57
    Par défaut
    tu n'as pas un soucis entre tes guillemets et tes cottes ?

  6. #6
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Citation Envoyé par titom59 Voir le message
    tu n'as pas un soucis entre tes guillemets et tes cottes ?

    Je n'ai pas compris ce que tu veux dire.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 57
    Par défaut
    dans ton fichier apsx :

    path='<%# Eval("Path") %>'
    href="<%# Eval("Path") %>"
    src="<%# Eval("Path") %>"

    tu utilises des fois ' ou "

    il faudrait vérifier si ça n'a pas d'incidence.

  8. #8
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    effectivement : ="<%# Eval("Path") %>" ne marche pas.

    essaye plutot ='<%# Eval("Path") %>'

  9. #9
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Citation Envoyé par topolino Voir le message
    effectivement : ="<%# Eval("Path") %>" ne marche pas.

    essaye plutot ='<%# Eval("Path") %>'
    C'est ce que j'ai fait et sa ne donne rien

  10. #10
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    En regardant le code des autres propriétés de la checkbox et d'autres controls j'ai vu que les attributs bindable doivent être marqués par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [DefaultValue("")]
    [Bindable(true)]
    [Localizable(true)]
    Ma propriété Path est donc maintenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    [DefaultValue("")]
    [Bindable(true)]
    [Localizable(true)]
    public string Path { get; set; }
    Mais ça ne fonctionne toujours pas

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 57
    Par défaut
    je suppose que ta référence vers cc6 est correctement déclaré dans ta page aspx

    la casse du mot "path" ne devait elle pas etre "Path" dans ta déclaration <cc6:routeinncheckbox path=

    Enfin je n'ai jamais surchargé un composant ainsi en web. n'as tu pas des problèmes lors du Load, sais tu mettre une trace ou un Break Point lors de l'alimentation de ton attributs Path ?

    dans <a href="<%# Eval("Path") %>" le href est il correctement renseigné ?

    je n'aime pas trop utiliser le terme "Path" qui correspond à une classe. si tu renommes en "FilePathToDelete", ou autre chose, en faisant attention à la casse ce n'est pas mieux ?

  12. #12
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Citation Envoyé par titom59 Voir le message
    je suppose que ta référence vers cc6 est correctement déclaré dans ta page aspx

    la casse du mot "path" ne devait elle pas etre "Path" dans ta déclaration <cc6:routeinncheckbox path=

    Enfin je n'ai jamais surchargé un composant ainsi en web. n'as tu pas des problèmes lors du Load, sais tu mettre une trace ou un Break Point lors de l'alimentation de ton attributs Path ?

    dans <a href="<%# Eval("Path") %>" le href est il correctement renseigné ?

    je n'aime pas trop utiliser le terme "Path" qui correspond à une classe. si tu renommes en "FilePathToDelete", ou autre chose, en faisant attention à la casse ce n'est pas mieux ?

    Oui le href est bien renseigné tout est bien bindé sauf la checkbox

  13. #13
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Bon j'ai trouvé la solution tout simplement passer par le viewstate voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    [DefaultValue("")]
    [Bindable(true)]
    [Localizable(true)]
    private string _Path;
     
    public string Path
    {
        get { return (string)Viewstate["Path"] ?? string.Empty; }
        set { Viewstate["Path"]  = value; }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème de code à déchiffrer avec eval(base64_decode)
    Par tomguiss dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/05/2013, 01h48
  2. Problème avec eval et try/catch
    Par kracter56 dans le forum MATLAB
    Réponses: 1
    Dernier message: 20/11/2012, 06h46
  3. Problème pour affichage avec Eval()
    Par arngrimur dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/10/2011, 12h13
  4. problème avec la commande "eval"
    Par Meskine3 dans le forum MATLAB
    Réponses: 4
    Dernier message: 08/07/2011, 19h39
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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