Ajouter des controls

Résolu
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007 - 31 août 2006 à 15:53
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007 - 5 sept. 2006 à 14:13
Bonjour, j'aimerais  ajouter dynamiquement des controls dans un fichier ascx.

Voilà comment je procède, mais cela ne m'affiche que le dernier.

'Pour chaque person présente
For i
As
Integer = 0
To person.Length - 1
   'Récupere le nom & prenom

   Dim name()
As
String = Split(person(i),
" ")
   'Procedure stockée qui me retourne le n° d'une personne

   Dim homeNoCommand
As
New OleDbCommand(
"AAA_getNumber " & name(0) &
", " & name(1) &
", " & type, Conn)
  
   Conn.Open()

   Dim number
As
String = homeNoCommand.ExecuteScalar
   Conn.Close()

   
   'personPanel est un panel avec 3 control (les 3 en-dessous)
   Dim myPane
As Panel = personPanel
   'Affectation des différentes valeurs

   CType(myPane.FindControl(
"fNameVal"), Label).Text = name(0)

   CType(myPane.FindControl(
"lNameVal"), Label).Text = name(1)

   CType(myPane.FindControl(
"phoneNo"), Label).Text = number

   'Ajoute le panel dans le plus grand panel
   phonePanel.Controls.Add(myPane)

Next

Mais voilà, comme dit plus haut, seule la dernière personne apparait.

Merci d'avance, et bon après-midi

 ElpenS

8 réponses

cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007
5 sept. 2006 à 14:13
Ben voilà, après quelques heures, j'ai enfin trouvé un moyen :

Dim personCtr
As
New personPane
personCtr =
CType(LoadControl(
"personPane.ascx"), personPane)
personCtr.FirstName = name(0)
personCtr.LastName = name(1)
personCtr.phoneNumber = number
phonePanel.Controls.Add(personCtr)
Et il m'ajoute mes petits panel.

Merci encore Nurgle pour ton aide

Bon après-midi a tous.

 ElpenS
3
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 3
31 août 2006 à 22:25
Salut,
Le problème dans ton code est qu'en réalité tu crées pas de "personPanel" à chaque iteration, tu crées juste une variable "myPane" qui pointe vers le "persoPanel" d'origine !

Si "personPanel" est un Panel que tu as ajouté à ta page, tu vas plutôt l'enlever et d'abord créer un custom control, qui va hériter de Panel, et qui va lui-même contenir trois labels, et qui lui va s'appeller PersonPanel.

Et ensuite tu fais :

Dim myPane As New PersonPanel() 
'Affectation des différentes valeurs
   CType(myPane.FindControl("fNameVal"), Label).Text = name(0)
   CType(myPane.FindControl("lNameVal"), Label).Text = name(1)
   CType(myPane.FindControl("phoneNo"), Label).Text = number

A++

<hr width="100%" size="2" />Nurgle (Antoine)
0
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007
1 sept. 2006 à 08:46
Je suis désolé, mais je n'ai pas réussi...

J'ai créer un control ascx (personPane) que j'ai registré dans PhonePane comme ceci :
<%

@
Register
Src="personPane.ascx"
TagName="persoPane"
TagPrefix="ucPerson" %>

Ensuite, j'ai fait :

Dim myPane As New PersonPanel() 
'Affectation des différentes valeurs
   CType(myPane.FindControl("fNameVal"), Label).Text = name(0)
   CType(myPane.FindControl("lNameVal"), Label).Text = name(1)
   CType(myPane.FindControl("phoneNo"), Label).Text = number

Mais j'obtient l'erreur :  Object reference not set to an instance of an object.

Et si je test myPane.fNameVal = name(0) l'erreur est : myPane.fNameVal is not accessible in this context because it is 'Protected

Merci pour ton aide

 ElpenS
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 3
1 sept. 2006 à 16:34
Eh bien, utilises des propriétés, dans ton PersonPanel :

Public Property FirstName As String
   Set(value As String)
      Me.fNameVal.Text = value
   End Set
   Get
      Return Me.fNameVal.Text
   End Get
End Property

Et tu fais pareil pour LastName et PhoneNumber, et comme ça tu n'as plus qu'à faire :

myPane.FirstName = name(0)
myPane.LastName = name(1)
myPane.PhoneNumber = number

A++

<hr width="100%" size="2" />Nurgle (Antoine)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007
4 sept. 2006 à 09:56
Merci, mais cela ne fonctionne toujours pas  ...

J'obtient toujours l'erreur :  {"Object reference not set to an instance of an object."}

C'est bien la m.....

A+ et merci

 ElpenS
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 3
4 sept. 2006 à 18:19
Quelle ligne exactement te renvoie cette erreur ?

<hr width="100%" size="2" />Nurgle (Antoine)
0
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007
5 sept. 2006 à 08:04
Hello,


C'est la ligne dans les propriétés de mon personPanel :


Me.fNameVal.Text = value


Merci

 ElpenS
0
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007
5 sept. 2006 à 11:45
En fait, quand je debug, il me met l'erreur a la ligne que je t'ai indiqué avant.


Mais quand je regarde la stack (at personPane.get_FirstName()), 
 la ligne indiquée est la suivante : Return Me.fNameVal.Text


Voilà, encore merci pour tout





 ElpenS
0
Rejoignez-nous