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 :

Affecter un bool à une propriété de ma page, dans le code Inline, en utilisant #Eval


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut Affecter un bool à une propriété de ma page, dans le code Inline, en utilisant #Eval
    Bonjour,

    Pouvez vous m'expliquer ce qui ne va pas :


    J'ai une page asp.net.
    Cette page a une propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public bool MyBool { get; set; }
    Dans mon code inline, je veux pouvoir affecter une valeur à cette propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%this.MyBool =%><%true %><%; %>
    J'ai testé, ce code seul fonctionne.

    Ca aussi ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%this.MyBool =%><% "toto" == null ? false : true %><%; %>
    Maintenant, la difficulté (ou pas) est que je dois affecter cette valeur en utilisant #Eval

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <asp:GridView  runat="server" AutoGenerateColumns="false" >
                <Columns>
                    <asp:TemplateField HeaderText="Equipementier">
                        <ItemTemplate>
                            <%this.MyBool=%><%#Eval("EquipementSupplier.LogoFileName") == null ? false : true%><%; %>
                        </ItemTemplate>
                    </asp:TemplateField>
                 <Columns>
    </asp:Gridview>
    J'ai une erreur à la compilation :
    Impossible de convertir implicitement le type 'void' en 'bool'
    Qu'est ce qui ne va pas ?
    Merci de votre aide.

  2. #2
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    c'est peut etre la concatenation de tout cela qui ne fonctionne pas,
    peut etre l'operateur ternaire ?

    Essaye de le décomposer avec un if

  3. #3
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    C'est pas l'opérateur ternaire selon moi car ceci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%this.MyBool =%><% "toto" == null ? false : true %><%; %>
    Je pense que c'est vraiment le #Eval qui pose souci.

  4. #4
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    J'ai essayé comme ceci également :

    J'ai défini une fonction dans ma page aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public bool MyFunction(string toto)
        {
            return toto == null ? false : true;
        }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%this.MyBool=%><%#this.MyFunction(Eval("EquipementSupplier.LogoFileName") as string)%><%; %>
    Ça ne compile toujours pas, même erreur.


    Et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%this.MyBool = %><%# DataBinder.Eval(Container.DataItem, "EquipementSupplier.LogoFileName")%><%; %>
    pareil même erreur.

    Et ça non plus ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%this.MyBool = %><%# this.MyFunction(((MyObject)Container.DataItem).EquipementSupplier.LogoFileName) %><%; %>

  5. #5
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    bizarre, c'est bien dans la page aspx que cela ne compile pas ?
    peut-etre en rajoutant un .ToString();

    Sinon ben tu le fais dans le rowDatabound

  6. #6
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    En gros le but final de tout ça pour moi était de générer tel ou tel HTML selon la valeur évaluée dans le #Eval.
    Soit on générait une image, soit un Label.

    Tout ça dans le code inline, car j'ai aucun évènement dans mon code behind à part le PageLoad (et je ne veux pas en mettre)

  7. #7
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    c'est toi qui voit, mais l'ASP.NET c'est du code inline et code code behind.
    En 4 lignes tu as programmé ce que tu essayes de faire depuis 2 jours.

    A toi de voir, mais parfois faut trouver une solution pour avancer.

  8. #8
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Dans mon cas je peux pas.

    J'utilise une technique un peu particulière :
    En résumé, j' ai une .aspx, qui charge des UserControls (.ascx) à la volée.
    La gestion, le traitement des évènements, tout est fait en JQuery, ou en en C# dans un WebService (le JQuery appelle le WebService via la fonction $.ajax).
    Dans ma page .aspx j'ai rien du tout en code behind. J'écris du HTML pur.
    Dans mes UserControls, j'ai mes constructeurs c'est tout.
    J'utilise la puissance et la facilité de l'ASP.NET dans mes UserControls (Notamment pour tout ce qui est Gridview, Listview ..)

    Cette technique a le désavantage d'être plus compliquée à mettre en place, que l'ASP.NET traditionnel. On perd une partie de la facilité d'utilisation de l'ASP.NET. Et surtout c'est assez plus difficile à debugger.
    Par contre, avec le JQuery notamment, j'ai l'impression de mieux contrôler les éléments de ma page, je peux utiliser l'AJAX de JQuery, plus de retour serveur synchrone, je m'affranchis de l'AjaxControlToolKit, plus de ViewState.
    Je comprends + ce que je fais.

    Ta façon de faire doit probablement fonctionner, c'est juste pas possible à faire dans mon cas.

  9. #9
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Citation Envoyé par Johann7751 Voir le message
    En gros le but final de tout ça pour moi était de générer tel ou tel HTML selon la valeur évaluée dans le #Eval.
    Soit on générait une image, soit un Label.

    Tout ça dans le code inline, car j'ai aucun évènement dans mon code behind à part le PageLoad (et je ne veux pas en mettre)
    Si tu ne veux pas le mettre en code behind, tu peux le mettre dans le même fichier aspx.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script runat="server">
    protected void grdiv_RowDataBound(......)
    {
       //ici tu initialise MyBool
    }
    </script>
    Dans ce cas tu suivrais toujours le concept du code inline (code inline = html + aspx + c# , le tout dans un seul fichier).

  10. #10
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Bien vu Ramajb, je n'y avait pas pensé et je pense effectivement que cela puisse etre une solution, de tout mettre en inline

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/03/2011, 10h34
  2. Réponses: 1
    Dernier message: 08/11/2010, 11h24
  3. Réponses: 3
    Dernier message: 01/06/2010, 15h09
  4. Récupérer une propriété d'un control dans une DynamicResource
    Par Eggiz dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 04/05/2009, 14h48
  5. recharger une page dans du code php
    Par pas30 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/05/2007, 08h38

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