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 :

[VB.Net] Comment renseigner plusieurs Label à partir d'une liste de valeurs ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut [VB.Net] Comment renseigner plusieurs Label à partir d'une liste de valeurs ?
    Hello, Le titre est un peu long mais en gros voici mon probléme. Je dois faire un code en VB .net dans une page .aspx ( précision je débute complétement en VB)
    La page .aspx contient x balises de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <asp:Label id="lblInfo" style="Z-INDEX: 100; LEFT: 205px; POSITION:
     absolute; TOP: 865px" runat="server" font-bold="True"></asp:Label>
    Courament, pour afficher du texte entre ces balises, on met dans le code VB ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblInfo.Text = " Coucou, bievenue sur mon site"
    Bon maintenant, tous mes textes pour les x balises sont dans une base de donnée ACCESS 2000 (.mb20) rangé dans deux colonnes : ID et Text.
    J'ai dequoi faire des requetes en SQL et récupérer la liste de tous les ID et tous les textes.

    Mon probléme est que ma fonction me retourne tous les ID et tous les textes dans 2 tableaux : IDNames() et IDValues() et je veux me servire de la valeur du premier ID, soit :

    IDNames(0) avec le text contenu dans IDValues(0)
    Cad, automatiser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblInfo.Text = " Coucou, bienvenue sur mon site"
    Par cela pour les x balises ( le nombre de balises est connu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDNames( icount ).Text = IDValues( icount )
    Or cette derniére ligne comporte une erreur de synthaxe :
    >
    Error Message : BC30456: 'Text' is not a member of 'String'
    Je ne comprend pas l'erreur Pouvez vous m'éclairer svp.
    Merci d'avance.

  2. #2
    Membre habitué
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 9
    Par défaut
    as tu essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IDNames( icount ).Text = cstr( IDValues( icount ) )
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDNames( icount ).Text = cType( IDValues( icount ), String )
    ?

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut
    Oui j'ai essayé les deux, tjs la meme erreur.

    On est en train de chercher du côté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim controlname as control
        dim labelname as label
        for icount=1 to norows
        controlname=FindControl(IDNames(icount))
        labelname=FindLabel(IDNames(icount))
        controlname.Text = IDValues(icount)
        controlname.Style.add("LEFT",Xpos(icount)&"px")    
     
        next icount

  4. #4
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Bon plusieurs remarques :
    Tout d'abord ta question n'a franchement que peu de rapport avec ADO.Net eventuellement ce serait du DataBinding mais même celà tu ne l'utilises pas vraiment. Donc oui tu tentes une liaison à de données mais entièrement remaniée. Donc ton premier souci est dû au fait que tu oublie que c'est un tableau que tu manipules (la référence a consulté est System.Array)
    Normalement ta seconde piste devrait fonctionner encore faut-il savoir en quoi celà ne fonctionne pas ? c'est à dire quelle ligne de code te fournit la même erreur que précedemment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    '... quelquepart
       For index = debut To fin
         Me.SetLabel(index)
       Next
    '...
    Private Sub SetLabel(ByVal i As Integer)
      Try
        CType(FindControl(Me.IDNames(i)), Label).Text =  _
    Me.IDValues(i).ToString()
      Catch ex As Exception
        Response.Write(ex.ToString())
      End Try
    End Sub

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut
    Bonjour,

    Merci pour vos réponses. La même erreur est retourné à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     controlname.Text = IDValues(icount)
    Ensuite pour ton code,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '... quelquepart
       For index = debut To fin
         Me.SetLabel(index)
       Next
    '...
    Private Sub SetLabel(ByVal i As Integer)
      Try
        CType(FindControl(Me.IDNames(i)), Label).Text =  _
    Me.IDValues(i).ToString()
      Catch ex As Exception
        Response.Write(ex.ToString())
      End Try
    End Sub
    Qu'est ce que les variables : " index, debut et fin " quelle valeur sa prend et d'ou sa viens ?

    Ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CType(FindControl(Me.IDNames(i)), Label).Text =  _
    Qu'est ce que le " Me " ? Et je suppose que le " _ " est le texte venant de la BDD soit IDValues ?

    Je ne peux pas tester avant d'être sur le server du bureau lundi matin, mais merci pour ton indication, si tu pouvais juste me préciser ces points d'ombres stp se serait simpa :p

  6. #6
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    ok
    donc pour Me c'est le mot clé de VB.net pour désigner l'instance en cours donc je suppose ton objet Page
    J'ai donc supposé que cette instance de type Page disposait des variables Array IDValues et IDNames
    Maintenant je ne connais pas le type de ces variables réellement car je n'ai pas vu leur declaration donc à toi de voir s'il est nécessaire ou pas d'assigner une valeur de IDValues en ajoutant ToString() dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CType(FindControl(Me.IDNames(i)), Label).Text =  _
    Me.IDValues(i).ToString()
    Ah oui le signe underscore(_) est utilisé pour passer simplement à la ligne dans l'ecriture d'un code tu peux l'enlever si tu supprime le passage à la ligne

    Comme la méthode FindControl renvoie un type Control, je caste directement celui récupéré en son type réel normalement Label(en espérant que les index que tu passes à la méthode correspondent bien à un Label ) d'où l'utilisation du CType( ... , Label) me permettant directement d'assigner la propriété Text de ce Label.
    Pour moi ce message d'erreur
    Error Message : BC30456: 'Text' is not a member of 'String'
    est incompatible avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim controlname As Control
    For icount=1 To norows
        controlname = FindControl(IDNames(icount))
        controlname.Text = IDValues(icount)
    Next icount
    à mon avis si ce message apparaît encore c'est un vieux code qui traine sur ta première tentative car en effet le type String ne possède pas evidemment d'accesseur Text.
    Quant aux variables index, debut et fin, elles sont là pour définir le parcours du tableau, donc, par exemple, si tu tiens à utiliser toutes les données de tes tableaux en entier. Je suppose que :
    • début = 0
    • fin = longueur de tes tableaux -1 (normalement la même pour les 2 tableaux)
    • index est la variable dynamique qui s'incrémente dans la plage définie sur le For...Next
    Comme tu sembles être débutant, as-tu utiliser un autre langage avant le VB.Net, histoire de te donner des équivalents si mes explications te sont encore obscures.

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut ;-)
    hello,

    Ok merci pour les explications. En effet je suis complétement débutant en VB .net, j'ai uniquement cette fonction à faire. Et j'ai évidement trés peu de temps. C'est pour cela que j'ai essayé de poster une question à peu prés claire sur le forum(désolé pour mes lacunes gigantesques de débutant).
    Alors oui jusqu'a présent j'ai fait pas mal de PHP et du C ( pr les cours, mais c'est pas ma tasse de thé).

    Donc pour te répondre :

    donc pour Me c'est le mot clé de VB.net pour désigner l'instance en cours donc je suppose ton objet Page
    J'ai donc supposé que cette instance de type Page disposait des variables Array IDValues et IDNames
    Maintenant je ne connais pas le type de ces variables réellement car je n'ai pas vu leur declaration donc à toi de voir s'il est nécessaire ou pas d'assigner une valeur de IDValues en ajoutant ToString()
    Il s'agit d'une page aspx, je n'ai pas déclarer explicitement un objet "Page" mais si c'est un objet par défaut créé par VB lorsque le code est dans une page aspx, alors c'est bon. Ensuite IDValues et IDNames sont déclarées comme ceci au début du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim IDNames(1) as String
    Dim IDValues(1) as String
    Donc je t'avoue que je comprend pas tout à fait :

    à toi de voir s'il est nécessaire ou pas d'assigner une valeur de IDValues en ajoutant ToString()
    D'aprés ma déclaration précédente dois-je utiliser ToString() ?

    Pour cela :

    Quant aux variables index, debut et fin, elles sont là pour définir le parcours du tableau, donc, par exemple, si tu tiens à utiliser toutes les données de tes tableaux en entier. Je suppose que :
    C'est bon je viens enfin de percuter, merci. Je lance le server et je te poste ma fonction pour info. En espérant implémenter correctement ta réponse :p Je posterai la fonction opérationnelle ensuite.

    Merci.

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut Code Fonction
    Fonction qui récupére les données de la BDD, fonctionne correctement, uniquement à titre indicatif pour voir d'où vienne les IDValues,IDNames et XPos, je n'ai pas de problème avec :

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     '--------------------------------   Array version --------------------------------
     
     
     Sub GetTranslateAll(Pagename as string, Language as string, _
    Byref Norows as integer, Byref IDNames as string(), _
    Byref IDValues as string(), Byref Xpos as String())
     
        Dim objConnection as OleDbConnection
        Dim objCommand as OleDbCommand
        Dim objDataReader as OleDbDataReader
        Dim strSQLQuery as String
        Dim icount as integer
     
        Dim IDValuesTest as Object '-Test de la valeur IDValues
        Dim XposTest as Object '- Test de la valeur Xpos
     
        Norows = fctNorows(PageName) '-- Nombre d' ID
     
        icount=0 '-- Compteur à 0
     
        'Get users email address
        objConnection=New OleDbConnection(Session("ConString"))
     
        strSQLQuery ="SELECT ID,Infos_"+Language+",LEFT_"+Language+" _ 
    FROM UK_FR WHERE (PageName = "& chr(34) & Pagename & chr(34) & ");" 
     
     
        objCommand = New OleDbCommand(strSQLQuery, objConnection)
        objConnection.Open()
        objDataReader=objCommand.ExecuteReader(CommandBehavior.CloseConnection)
     
        Try
     
        objDataReader.Read()
     
    Redim IDNames (Norows)
    Redim IDValues(Norows)
    Redim Xpos(Norows)
     
    icount =1
    while objDataReader.read() '-- Enregistre les données de la BDD :
     
        IDNames(icount) = objDataReader.Item("ID")
     
     
        IDValuesTest = objDataReader.Item("Infos_"+Language)
        If TypeOf IDValuesTest Is String Then
        IDValues(icount) = IDValuesTest
        End if
     
     
        XposTest = objDataReader.Item("Left_"+Language)
        If TypeOf XposTest Is String Then
        Xpos(icount) = XposTest
        End if
        icount = icount + 1
    end while
     
        Finally
        objConnection.Close()
        End Try
     
        End Sub
     
        '------------------------
    Code qui dois "imprimer" les ID et leur valeur ".text" au chargement de la page avec Page_Load() :

    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
    Dim pagename,idelt,att,user,lang as string
     
    Sub Page_Load(sender as object, e as eventargs)
     
    PageName = "abandoned_cars.aspx" '-- Page courante
    Lang = "FR"
    Dim IDNames(1) as string '-- Nom des ID
    Dim IDValues(1) as string '-- Valeur ".Text" des ID
    Dim Xpos(1) as string '-- Valeur Style "LEFT" en px de l' ID
    Dim norows as integer '-- Nombre d' ID    
    Dim icount as integer  '-- Compteur
     
        If Not IsPostBack Then '-- Test de l'état du formulaire
     
    norows = fctNorows(pagename)    
     
    Call GetTranslateAll(PageName, Lang,norows,IDNames,IDValues,Xpos)
     
    '------------- Affichage ".TEXT" - Partie qui pose problème -------------
        dim controlname as control
        dim labelname as label
     
        for icount=1 to norows
        controlname=FindControl(IDNames(icount)) '-- return true or false
        'labelname=FindLabel(IDNames(icount))
     
    -- Error : BC30456: 'Text' is not a member of 'String' --
        controlname.Text = IDValues(icount) 
    -- Error : BC30456: 'Text' is not a member of 'String' --
     
        controlname.Style.add("LEFT",Xpos(icount)&"px")
     
        next icount
     
        rbtnYes.Checked = True
     
        lblMsg.Text = ""
     
     '----------------- Fin affichage ".TEXT" des ID ---------
     
        End If
     
        End Sub

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/09/2014, 09h58
  2. Réponses: 4
    Dernier message: 18/03/2010, 12h11
  3. [MySQL] Comment récupérer un champ sélectionné à partir d'une liste déroulante?
    Par biba2386 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/05/2008, 14h21
  4. [VB.NET]Comment modifier un textbox a partir d'une dll?
    Par Subkill dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 21/01/2008, 21h38
  5. [.NET]réécriture d'un fichier a partir d'une list box
    Par scorpking dans le forum VC++ .NET
    Réponses: 14
    Dernier message: 24/04/2006, 14h16

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