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 : cast spécifié n'est pas valide.


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut Problème : cast spécifié n'est pas valide.
    Bonjour tout le monde,
    j'ai développé une fonction qui me retourne le chemin des images.
    Je fais appel à cette fonction dans la partie HTML.
    Voici le prototype de la fonction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Protected Function getPhotoPath(ByVal IdPersonne As String, ByVal Stockage_Photo As Byte(), ByVal PhotoPath As String) As String
    la fonction marche bien puisque je l'utilise dans d'autres formulaires.

    l'appel dans la partie html est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%# getPhotoPath(DataBinder.Eval(Container.DataItem, "ID_PERSONNE"),DataBinder.Eval(Container.DataItem, "STOCKAGE_PHOTO"),DataBinder.Eval(Container.DataItem, "PHOTO")) %>
    Lorsque j'execute, j'ai le message d'erreur suivant :
    Le cast spécifié n'est pas valide.

    j'ai trouvé que le 2ème argument qui est de type Byte() qui est l'origine du problème. J'ai mis alors un cast comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CType(DataBinder.Eval(Container.DataItem, "STOCKAGE_PHOTO"), Byte())
    mais j'ai toujours la même erreur.

    Quelqu'un a une idée ? Merci

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    <%# ... %>: Remplace par <% Response.Write( ... ) %>

  3. #3
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    Merci pour ta réponse.

    j'ai ecris ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% Response.Write(getPhotoPath(DataBinder.Eval(Container.DataItem, "ID_PERSONNE"),CType(DataBinder.Eval(Container.DataItem, "STOCKAGE_PHOTO"), Byte()),DataBinder.Eval(Container.DataItem, "PHOTO"))) %>
    j'ai eu le message d'erreur suivant :

    Message d'erreur du compilateur: BC30451: Le nom 'Container' n'est pas déclaré.

    j'ai rajouté le # après le %, alors j'ai eu le message suivant :

    Message d'erreur du compilateur: BC30518: La résolution de surcharge a échoué, car aucun 'ToString' accessible ne peut être appelé avec ces arguments :



    une idée ?

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    C'est quoi Container ? A mon avis c'est de la que vient l'erreur...

    Et la fonction Eval renvoie quel type d'objet ?

  5. #5
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    Bonjour,

    le Container.DataItem ne pose pas de problème puisque j'arrive à afficher les données issues de la base de données avec. et j'ai testé la fonction sans le DataBinder.Eval(Container.DataItem, "STOCKAGE_PHOTO") et sa retourne un résultat. donc le problème vient de là. sinon comment je peux vérifier le type que retourne DataBinder.Eval ??

  6. #6
    Membre régulier
    Profil pro
    UN
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Points : 87
    Points
    87
    Par défaut try this
    Je crois que la solution sera de realiser une connexion a la base a partir du code behind, tester le contenu de la variable, puis, le passer au code html. cela serai du sort suivant:

    protected mavar as string
    mavar=getPhotoPath(tonId, toph)

    """"Là ou vous allez tester le contenu retourné par la fonction"""""""""

    Vous pouvez en suite passer le chemain de l'image au code html comme suit:

    <%#Container.DataItem.mavar%>

    j'éspere que cela pourait aider

    Alabama song

  7. #7
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    Merci pour ta réponse,

    Bonne solution mais dans mon cas, j'utilise un DataList qui comme source un dataview :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                dtlTrombi.DataSource = ds.Tables(0).DefaultView
                dtlTrombi.DataBind()
    Donc ce cas, je pense que impossible d'opter pour cette solution puisque c'est le databind qui charge les données.

  8. #8
    Membre régulier
    Profil pro
    UN
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Points : 87
    Points
    87
    Par défaut
    Pouvez vous m'expliquer un peu plus le fonctionnement du datalist?
    qu'est ce qu'il list? et pourquoi est il impossible de cce faire?

  9. #9
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    bon voici un lien vers msdn sur les datalist.

    http://msdn2.microsoft.com/fr-fr/lib...st(VS.80).aspx

    Sinon j'attends toujours votre aide
    je suis bloqué depuis hier.

    A très bientot

  10. #10
    Membre régulier
    Profil pro
    UN
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Points : 87
    Points
    87
    Par défaut
    ce que j'essai de vous faire passer, c'est que je travail par la meme methode il y a 1 mois et je rencontre pratiquement pa de problem!

    prenez 5 min et expiquez moi le role de chaque objet, et soyez sur qu'on y arrivera!

    Or, je voi pa de liens, mais je prefere votre explication !

    Alabama song

  11. #11
    Membre régulier
    Profil pro
    UN
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Points : 87
    Points
    87
    Par défaut
    Je viens de relir la discussion, et apperemment, vous n'avez pas trés bien compri mon propos!
    Quand je dis 'le role de chaque objet', veux dire le besoin qu'il rempli (liste le personnel, les articles,...), et pas son fonctionnement general 'qu'est ce qu'un datalist'!

    Or, si vous tenez a cet aide, veuillez m'expliquez le role de chaque objet dans votre page (l'information qu'il apporte ou autrement dit: qu'est ce qu'il liste)!
    je ne veux surtout citer de sinon de crainte d'avoir l'air d'une mechante

    Cordialement

    Alabama song

  12. #12
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    ok merci.
    je m'explique, je veux créer un trombinoscope des étudiants d'une classe donnée. un trombinocope ressemble à un album de photo.

    les photos des étudiants et leur données sont dans la base de données.

    les données sont chargées dans un datalist. j'ai besoin d'afficher 16 photos par page a raison de 4 photos par ligne. le datalist me permet de faire ceci facilement. en plus des photos j'affiche d'autres champs.

    Pour l'affichage des données ca marche très bien. Le problème que j'ai est concerne les photos.

    j'espère que j'ai été plus clair là. Sinon au contraire t'as pas l'air d'une méchante. je suis très reconnaissant.

  13. #13
    Membre régulier
    Profil pro
    UN
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Points : 87
    Points
    87
    Par défaut
    pour afficher un controle dans un conteneur, on utilse 'TemplateItem'!
    dans les datalist, et dapré ma connaissance, on ne peut l'utiliser!
    choisissez, si possible, soit un dataGrid soit un gridView pour afficher vos images!

    le code suivant vous permetera d'y parvenir:

    <asp:datagrid id="dg" runat="server" AutoGenerateColumns="False" BorderWidth="1px" BorderStyle="None" ShowHeader="False" PageSize="2" AllowPaging="True" GridLines="None">
    <Columns>
    <asp:TemplateColumn ItemStyle-VerticalAlign="Top" FooterStyle-Font-Size="12" ItemStyle-ForeColor="#d37100" <ItemTemplate >
    <asp:image ID="img" runat="server" imageUrl= <%#Container.DataItem.mavar %></asp:LinkButton>

    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>

    <PagerStyle Mode=NumericPages CssClass="nav3" Font-Size="10px" ></PagerStyle>
    </asp:datagrid>
    Vous créré autant de <columns> que d'image dans la ligne, dans votre cas, ce serai 4!
    et vous aller jouer sur le contenu de 'mavar' (la variable kon a rempli dans un message precedent) par une boucle sur la table des etudiant!

    je sais pas s'il vous serai possible de choisir un autre conteneur, mais ca serai appreciable


    Alabama song

  14. #14
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    en fait c'est la fonction getPhotoPath qui me retourne le chemin de l'image.
    Elle récupère la photo de la base de données et la stocke dans un répertoire.
    voici son code :

    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
    Protected Function getPhotoPath(ByVal IdPersonne As String, ByVal Stockage_Photo As Byte(), ByVal PhotoPath As String) As String
                Dim GestionPhoto As String = ConfigurationSettings.AppSettings("GestionPhoto")
                Dim path As String
                If GestionPhoto.ToUpper = "DATABASE" And Not Stockage_Photo Is DBNull.Value Then
                    SavePhotoFromDB(IdPersonne, Stockage_Photo, PhotoPath)
                End If
     
                ' On stocke la photo de l'étudiant
                If Not PhotoPath Is DBNull.Value Then
                    path = getrelativepath(PhotoPath) + IdPersonne + ".jpg"
                Else
                    Dim UrlPhoto As String = System.Configuration.ConfigurationSettings.AppSettings("CheminPhysiquePhotos")
                    path = UrlPhoto + IdPersonne + ".jpg"
     
                End If
                Return "<img src='" & path & "' width=110 height=110>"
            End Function

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/04/2011, 11h22
  2. Message d'erreur: Le cast spécifié n'est pas valide.
    Par giscard85 dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 30/03/2011, 12h10
  3. Le cast spécifié n'est pas valide
    Par abbd dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/05/2008, 21h30
  4. Erreur "Le cast spécifié n'est pas valide"
    Par GriffinK dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/04/2008, 11h46
  5. Le cast spécifié n'est pas valide
    Par illegalsene dans le forum VB.NET
    Réponses: 3
    Dernier message: 11/03/2008, 15h59

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