none
Paramètre image.height dans un repeater RRS feed

  • Question

  • J'ai une image dans un repeater et elle doit changer de taille de temps à autre.

    Ma collection inclue cette info et est insérée comme suit:

    Height="<%#DataBinder.Eval(Container.DataItem,"Bhauteur")%>"

    Mais cela me dit:

    Description : Une erreur s'est produite au cours de l'analyse d'une ressource requise pour répondre à cette demande.
    Veuillez consulter ci-dessous les détails relatifs à l'erreur d'analyse en question, puis modifier votre fichier source de manière appropriée.

    Message d'erreur de l'analyseur: Le contenu littéral ('" Height='') n'est pas autorisé dans un 'System.Web.UI.WebControls.Image'.


    J'ai beau avoir testé avec dans ma collection
    -une donnée de type Ushort (de base)
    -une donnée de type Intéger avec Cint(ushort)
    -une donnée de type string : "100"
    -un donnée de type string : "100px" ou "100 px"
    avec une commande entre guillemet ou entre tild.
    avec une convertion en string ou non.
    (Height="<%#DataBinder.Eval(Container.DataItem,"Bhauteur")%.ToString()>")

    J'ai même essayer de "tricher" en testant:
    style="Height:<%#DataBinder.Eval(Container.DataItem,"Bhauteur").ToString()%>;"

    Mais il dit la même chose avec "style".

    Il doit pourtant bien être paramétrable, non?

    -----------------------------------------------

    Re,

    J'ai trouvé le problème: c'est l'outil image qui buguait.
    Quand j'ai remplacé les paramètres height et width par des valeurs fixes dans l'explorateur de propriètès il m'a sorti une autre erreur.
    Je ne me souviens pas très bien mais c'était du genre: itemTemplate ne fait pas partie des paramétres public image.
    En remplaçant l'image et en remplissant les paramètres via l'explorateur de propriété tout est rentré dans l'ordre.
    Il ne détectait pas la fin de l'image pourtant délimitée convenablement par />

     ------------------------------------------

    Re,
    hé bha non , ca recommence à me prendre le choux:

    Message d'erreur de l'analyseur:
    Impossible de créer un objet de type 'System.Web.UI.WebControls.Unit' à partir de sa représentation sous forme de chaîne, '"<%#DataBinder.Eval(Container.DataItem,"Bhauteur").ToString()%', pour la propriété 'Height'.

    avec :
    "<%#DataBinder.Eval(Container.DataItem,"Bhauteur")%"
    "<%#DataBinder.Eval(Container.DataItem,"Bhauteur").ToString()%"
    "<%#(Container.DataItem).Bhauteur%>"
    "<%#(Container.DataItem).Bhauteur.ToString()%>"

    Même combat :x

    _______________________________________________________________________
    il y a 3 heure(s) et 51 minute(s)
    Ciprian Duduiala

    Bonjour,

    Tout d’abord je voudrais vous demander à ouvrir un thread nouveau pour une nouvelle question. La question initiale a eu une réponse correcte, donc il ne faut pas la supprimer afin que les membres de la communauté avec le même problème puissent profiter de cette solution.
    Concernant votre nouvelle question : j’ai essayé avec  Height="<%#(Container.DataItem). Bhauteur.ToString()%>" comme dans le cas précèdent et tout marche bien.
     
    Bonne journée,
    Cipri


    Ciprian DUDUIALA, MSFT 
    __________________________________________________________________________
    il y a 4 minute(s)
    dialAsp 
     
    Désolé pour le changement de statut du post.
    Comme la question est exactement du même type je n'ai pas voulu faire un doublon en ouvrant un autre thread.
    Et pour obtenir réponse j'ai dû retirer la réponse acceptée.
    Mais j'ai bien noté que la question du dessus à été traitée.
    Cela n'empéchant pas la communauté de jeter un coup d'oeil et comme cela n'est que provisoire, je n'ai pas jugé d'un prima bord que cela pouvait être bloquant.
    Je le saurais pour la prochaine fois.

    Pour revenir au problème j'ai toujours mon soucis de compilation:
    Mais un autre problème est apparu et c'est fichtrement déroutant:
    la commande <%#(Container.DataItem).Bmil%> ne veut pu passer:
    http://images.imagehotel.net/?97cef3mlpm.gif

    Pourtant , en me servant de cette commande dans un label: là miracle il trouve la donnée.
    comme on peut le voir ci dessous. Sans avoir retouché à l'arraylist de collection bien sûre.

    Pour éviter ces facéties Il va donc me falloir  une solution sur la base de:
    <%#DataBinder.Eval(Container.DataItem,"Bhauteur")%>

    Erreur d'analyse
    Description : Une erreur s'est produite au cours de l'analyse d'une ressource requise pour répondre à cette demande.
    Veuillez consulter ci-dessous les détails relatifs à l'erreur d'analyse en question, puis modifier votre fichier source de manière appropriée.

    Message d'erreur de l'analyseur: Le contenu littéral ('"
                       Height="') n'est pas autorisé dans un 'System.Web.UI.WebControls.Image'.

    Erreur source:
    Ligne 113 :   <asp:Label Text="<%#(Container.DataItem).Bmil%>" runat="server"></asp:Label>
    Ligne 114 :   <asp:Image ID="barremil" runat="server"
    Ligne 115 :   ImageUrl="<%#DataBinder.Eval(Container.DataItem,"Bmil")%>"
    Ligne 116 :   Height="<%#DataBinder.Eval(Container.DataItem,"Bhauteur").ToString()%>"
    Ligne 117 :   Width="<%#DataBinder.Eval(Container.DataItem,"Blargeur").ToString()%>"

    C'est étrange il me dit que Height pose problème mais il vise encore "Bmil" en rouge...
    Il (le compilateur) ne veut plus se contenter de me prendre le choux , il veut aussi me rendre chèvre...

    • Modifié dialAsp jeudi 26 mai 2011 18:05 mise en forme
    jeudi 26 mai 2011 16:25

Réponses

Toutes les réponses

  • Bonjour,

    Pouvez-vous nous montrer comment vous créez le DataSource de votre Repeater et le code complete de votre Repetear pour mieux comprendre votre application ? Merci !

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    vendredi 27 mai 2011 13:01
  • Ma source tire ses infos d'une base de donnée.

    C'est une vraie usine à gaz éparpillée en plusieur fonctions.

    Ensuite les donnée sont recompilées, chaque donnée utile pour la constition d'une image par le repeater est rentrée dans une collection avec les key appropriés qu'utilise le repeater (exemple: "Bmil")

    ensuite la collection est add dans un arraylist.

    la compilation continue avec les infos pour l'image suivante etc

     

    Pour ce débuguage j'ai réduit le repeater à son mode le plus simple.

    Le code entier du repeater est visible sur l'image plus haut mais je vous le remet ici:

    <asp:Repeater ID="BarreVie" runat="server">                                     
    <ItemTemplate >
    <asp:Label Text="<%#(Container.DataItem).Bmil%>" runat="server"></asp:Label>
    <asp:Image ID="barremil" runat="server"
    ImageUrl="<%#DataBinder.Eval(Container.DataItem,"Bmil")%>"
    Height="<%#DataBinder.Eval(Container.DataItem,"Bhauteur").ToString()%>" 
    Width="<%#DataBinder.Eval(Container.DataItem,"Blargeur").ToString()%>"
    ToolTip="<%#(Container.DataItem).comment%>" />
    </ItemTemplate>
    </asp:Repeater>

    avec l'arraylist simplifié que je lui "injecte", il est sensé me constituer une seule image d'une taille définie avec une infobulle.

    Si j'ai simplié l'arraylist avec une seule rafale de donnée, je n'ai en revanche pas simpliée la quantité de donnée de cette rafale. Il y a plein de données dont le repeater ne se servira pas. Mais cela n'a aucune incidence et chacune d'elle ont un key différent.

    Je ne voulais pas chambouler tout mon code. Voici l'arraylist dans la partie utile:

    http://images.imagehotel.net/?11lykqewa5.gif


    Le label est parfaitement inutil mais c'était pour mettre en évidence que la data "Bmil" est belle et bien accessible (a contrario de ce que me disait un message d'erreur précédent)
    • Modifié dialAsp vendredi 27 mai 2011 16:07 commentaire label
    vendredi 27 mai 2011 16:03
  • Bonjour,

    J’ai analyse votre problème et le message d’erreur est très suggestive. J’ai voulu voir plus de votre code pour comprendre comment vous construisez votre ArrayList.

     

    Donc, l’erreur dit que le membre public « Bmil » du type Collection est introuvable. C’est normal vu que la classe Microsoft.VisualBasic.Collection est prédéfinie et ne contient pas ce membre.

     

    Ce que je vous propose à faire est remplacer la collection avec un objet d’un type utilisateur. Donc il faut créer une classe disons DetailsImage avec les memebres Bhateur, Bmil, Blargeur, etc et votre ArrayList contiendra des objets du type DetailsImage pas des collections.

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    • Marqué comme réponse dialAsp lundi 30 mai 2011 15:30
    lundi 30 mai 2011 13:04
  • Je m'y met tout de suite. On va voir...

    Merci pour l'idée.

    A suivre

    ---------------------------------

    Ca fonctionne.

    Ya encore des soucis dans le footerTemplate et headerTemplate mais je vais creuser avant de demander.

    Merci, à la prochaine :)


    • Modifié dialAsp lundi 30 mai 2011 15:30 conclusion
    lundi 30 mai 2011 13:23