Galere avec postback

Le
Emilie
Bonjour



J'ai un problème de postback dans une appli web avec VB



J'ai un RadioButtonListe qui permet de choisir entre 3 secteurs d'activité

Le choix de l'activité déclenche la création d'un ContentPlaceHolder dans
lequel sont créés dynamiquement des linkButton



Au premier affichage je n'ai pas de problème, par contre quand je clic sur
le RadioButtonListe cela Beug et j'ai le message :



System.Web.HttpException: Plusieurs contrôles avec le même ID 'lblF1' ont
été trouvés. FindControl requiert que les contrôles aient des ID uniques.



J'ai beau cherché je ne trouve pas de solutions, pouvez-vous m'aider



Merci pour votre aide

Emilie
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #20193591
Comme d'hab :
- quelle est la ligne concernée ?
- un exemple *le plus court possible* qui montre juste ce problème pourrait
permettre te permettre de comprendre et résoudre le problème ou au pire de
permettre à qq d'uatre de le reproduire et de t'aider

Je dirais que le code actuel crée plusieurs contrôles avec le même nom ?..

--
Patrice


"Emilie" news:4ab75e29$0$12653$
Bonjour



J'ai un problème de postback dans une appli web avec VB



J'ai un RadioButtonListe qui permet de choisir entre 3 secteurs d'activité

Le choix de l'activité déclenche la création d'un ContentPlaceHolder dans
lequel sont créés dynamiquement des linkButton



Au premier affichage je n'ai pas de problème, par contre quand je clic sur
le RadioButtonListe cela Beug et j'ai le message :



System.Web.HttpException: Plusieurs contrôles avec le même ID 'lblF1' ont
été trouvés. FindControl requiert que les contrôles aient des ID uniques.



J'ai beau cherché je ne trouve pas de solutions, pouvez-vous m'aider



Merci pour votre aide

Emilie




Emilie
Le #20193671
Bonjour Patrice

Merci pour ta réponse, je suis obligé de te donner tout le code.
Cela Beug sur : Sub Secteur_Change(ByVal sender As Object, ByVal e As
EventArgs)

MON CODE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

If Not Page.IsPostBack Then

Session("IDsecteur") = "FAB"

VoirMachine()

Else

PlhFAB.Visible = False

VoirMachine()

End If

End Sub

Sub Secteur_Change(ByVal sender As Object, ByVal e As EventArgs)

RblSecteur.Visible = True

If RblSecteur.SelectedIndex > -1 Then

Session("Secteur") = RblSecteur.SelectedItem.Value

RblSecteur.Visible = True

Select Case Session("Secteur")

Case "Matériel de fabrication"

LblTitre.Text = "MATERIEL DE FABRICATION"

Session("IDsecteur") = "FAB"

Case "Assistance à la fabrication"

LblTitre.Text = "ASSISTANCE A LA FABRICATION"

Session("IDsecteur") = "ASS"

Case "Matériel de métrologie"

LblTitre.Text = "MATERIEL DE METROLOGIE"

Session("IDsecteur") = "MET"

End Select

Dim VoisSecteur = Session("IDsecteur")

VoirMachine()

End If

End Sub

Sub VoirMachine()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc", Session("IDsecteur"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "VoirMachine")

Session("ImgFAB") =
DSPageData.Tables("VoirMachine").Rows(0).Item("Limage")

Session("NbRef") = DSPageData.Tables("VoirMachine").Rows.Count

Dim voirSecteur As String = Session("IDsecteur")

Dim VoirNbNum As Integer = Session("NbRef")

'Création du Cph

Dim intI As Integer = 0

'Dim counter As Integer = 1

For intI = 1 To Session("NbRef")

Session("Num") = intI

Dim lblF As New WebControls.LinkButton

lblF.ID = "lblF" & Session("Num")

AfficheTexte()

With lblF

.Text = Session("Texte")

.Font.Bold = True

.Width = 200

End With

AddHandler lblF.Command, AddressOf LinkButtonF_Command

'Ajouter linkbutton au container (PlaceHolder)

Me.PlhFAB.Controls.Add(lblF)

Next

End Using

End Sub

Public Sub LinkButtonF_Command(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.CommandEventArgs)

If IsPostBack Then

Dim lblF As LinkButton = DirectCast(sender, LinkButton)

Session("IDprod") = Mid(lblF.ID, 5)

Dim lechoix As Integer = Session("IDprod")

lechoix = Session("IDprod")

AfficheChoix()

Dim VoirLaRef As String = Session("Ref")

End If

End Sub

Sub AfficheTexte()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

'connection a la base de données

DBCommand = New OleDbCommand("Select * From Machines Where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc", Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Ordre", Session("Num"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "Laref")

Dim Reftexte As String =
DSPageData.Tables("Laref").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("Laref").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub

Sub AfficheChoix()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc", Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Parc", Session("IDprod"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "LaMachine")

Session("ImgDuSoin") =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

Dim Reftexte As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub



Emilie



"Patrice" %
Comme d'hab :
- quelle est la ligne concernée ?
- un exemple *le plus court possible* qui montre juste ce problème
pourrait permettre te permettre de comprendre et résoudre le problème ou
au pire de permettre à qq d'uatre de le reproduire et de t'aider

Je dirais que le code actuel crée plusieurs contrôles avec le même nom ?..

--
Patrice


"Emilie" news:4ab75e29$0$12653$
Bonjour



J'ai un problème de postback dans une appli web avec VB



J'ai un RadioButtonListe qui permet de choisir entre 3 secteurs
d'activité

Le choix de l'activité déclenche la création d'un ContentPlaceHolder dans
lequel sont créés dynamiquement des linkButton



Au premier affichage je n'ai pas de problème, par contre quand je clic
sur le RadioButtonListe cela Beug et j'ai le message :



System.Web.HttpException: Plusieurs contrôles avec le même ID 'lblF1' ont
été trouvés. FindControl requiert que les contrôles aient des ID uniques.



J'ai beau cherché je ne trouve pas de solutions, pouvez-vous m'aider



Merci pour votre aide

Emilie







Patrice
Le #20193831
Au chargement de la page on appelle VoirMachine (que l'on soit ou non en
postback). VoirMachine est également appelé via Secteur_Change et c'est dans
VoirMachine que l'on crée les contrôles lblF. Donc si le secteur change, on
appelle deux fois "VoirMachine" (une fois depuis Page_Load, une fois depuis
Secteur_Change) et l'on tente donc de créer deux fois les mêmes contrôles...

Quelque chose ne va pas dans la logique. Je dirais que dans Form_Load, on ne
doit avoir que les initialisations si on n'est pas en postback. Le reste de
ce qui est arrive en postback est géré via les évènements qui surviennent et
pas dans un Else...

--
Patrice

"Emilie" news:4ab765d5$0$12654$
Bonjour Patrice

Merci pour ta réponse, je suis obligé de te donner tout le code.
Cela Beug sur : Sub Secteur_Change(ByVal sender As Object, ByVal e As
EventArgs)

MON CODE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs)

If Not Page.IsPostBack Then

Session("IDsecteur") = "FAB"

VoirMachine()

Else

PlhFAB.Visible = False

VoirMachine()

End If

End Sub

Sub Secteur_Change(ByVal sender As Object, ByVal e As EventArgs)

RblSecteur.Visible = True

If RblSecteur.SelectedIndex > -1 Then

Session("Secteur") = RblSecteur.SelectedItem.Value

RblSecteur.Visible = True

Select Case Session("Secteur")

Case "Matériel de fabrication"

LblTitre.Text = "MATERIEL DE FABRICATION"

Session("IDsecteur") = "FAB"

Case "Assistance à la fabrication"

LblTitre.Text = "ASSISTANCE A LA FABRICATION"

Session("IDsecteur") = "ASS"

Case "Matériel de métrologie"

LblTitre.Text = "MATERIEL DE METROLOGIE"

Session("IDsecteur") = "MET"

End Select

Dim VoisSecteur = Session("IDsecteur")

VoirMachine()

End If

End Sub

Sub VoirMachine()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc", Session("IDsecteur"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "VoirMachine")

Session("ImgFAB") =
DSPageData.Tables("VoirMachine").Rows(0).Item("Limage")

Session("NbRef") = DSPageData.Tables("VoirMachine").Rows.Count

Dim voirSecteur As String = Session("IDsecteur")

Dim VoirNbNum As Integer = Session("NbRef")

'Création du Cph

Dim intI As Integer = 0

'Dim counter As Integer = 1

For intI = 1 To Session("NbRef")

Session("Num") = intI

Dim lblF As New WebControls.LinkButton

lblF.ID = "lblF" & Session("Num")

AfficheTexte()

With lblF

.Text = Session("Texte")

.Font.Bold = True

.Width = 200

End With

AddHandler lblF.Command, AddressOf LinkButtonF_Command

'Ajouter linkbutton au container (PlaceHolder)

Me.PlhFAB.Controls.Add(lblF)

Next

End Using

End Sub

Public Sub LinkButtonF_Command(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.CommandEventArgs)

If IsPostBack Then

Dim lblF As LinkButton = DirectCast(sender, LinkButton)

Session("IDprod") = Mid(lblF.ID, 5)

Dim lechoix As Integer = Session("IDprod")

lechoix = Session("IDprod")

AfficheChoix()

Dim VoirLaRef As String = Session("Ref")

End If

End Sub

Sub AfficheTexte()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

'connection a la base de données

DBCommand = New OleDbCommand("Select * From Machines Where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc", Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Ordre", Session("Num"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "Laref")

Dim Reftexte As String =
DSPageData.Tables("Laref").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("Laref").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub

Sub AfficheChoix()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc", Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Parc", Session("IDprod"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "LaMachine")

Session("ImgDuSoin") =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

Dim Reftexte As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub



Emilie



"Patrice" news: %
Comme d'hab :
- quelle est la ligne concernée ?
- un exemple *le plus court possible* qui montre juste ce problème
pourrait permettre te permettre de comprendre et résoudre le problème ou
au pire de permettre à qq d'uatre de le reproduire et de t'aider

Je dirais que le code actuel crée plusieurs contrôles avec le même nom
?..

--
Patrice


"Emilie" news:4ab75e29$0$12653$
Bonjour



J'ai un problème de postback dans une appli web avec VB



J'ai un RadioButtonListe qui permet de choisir entre 3 secteurs
d'activité

Le choix de l'activité déclenche la création d'un ContentPlaceHolder
dans lequel sont créés dynamiquement des linkButton



Au premier affichage je n'ai pas de problème, par contre quand je clic
sur le RadioButtonListe cela Beug et j'ai le message :



System.Web.HttpException: Plusieurs contrôles avec le même ID 'lblF1'
ont été trouvés. FindControl requiert que les contrôles aient des ID
uniques.



J'ai beau cherché je ne trouve pas de solutions, pouvez-vous m'aider



Merci pour votre aide

Emilie











Emilie
Le #20194221
Patrice

J'ai supprimé le VoirMachine dans le Form_Load non-postback et postback

Quand le Secteur change je n'ai plus de création des lblF

Emilie
"Patrice" %
Au chargement de la page on appelle VoirMachine (que l'on soit ou non en
postback). VoirMachine est également appelé via Secteur_Change et c'est
dans VoirMachine que l'on crée les contrôles lblF. Donc si le secteur
change, on appelle deux fois "VoirMachine" (une fois depuis Page_Load, une
fois depuis Secteur_Change) et l'on tente donc de créer deux fois les
mêmes contrôles...

Quelque chose ne va pas dans la logique. Je dirais que dans Form_Load, on
ne doit avoir que les initialisations si on n'est pas en postback. Le
reste de ce qui est arrive en postback est géré via les évènements qui
surviennent et pas dans un Else...

--
Patrice

"Emilie" news:4ab765d5$0$12654$
Bonjour Patrice

Merci pour ta réponse, je suis obligé de te donner tout le code.
Cela Beug sur : Sub Secteur_Change(ByVal sender As Object, ByVal e As
EventArgs)

MON CODE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs)

If Not Page.IsPostBack Then

Session("IDsecteur") = "FAB"

VoirMachine()

Else

PlhFAB.Visible = False

VoirMachine()

End If

End Sub

Sub Secteur_Change(ByVal sender As Object, ByVal e As EventArgs)

RblSecteur.Visible = True

If RblSecteur.SelectedIndex > -1 Then

Session("Secteur") = RblSecteur.SelectedItem.Value

RblSecteur.Visible = True

Select Case Session("Secteur")

Case "Matériel de fabrication"

LblTitre.Text = "MATERIEL DE FABRICATION"

Session("IDsecteur") = "FAB"

Case "Assistance à la fabrication"

LblTitre.Text = "ASSISTANCE A LA FABRICATION"

Session("IDsecteur") = "ASS"

Case "Matériel de métrologie"

LblTitre.Text = "MATERIEL DE METROLOGIE"

Session("IDsecteur") = "MET"

End Select

Dim VoisSecteur = Session("IDsecteur")

VoirMachine()

End If

End Sub

Sub VoirMachine()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "VoirMachine")

Session("ImgFAB") =
DSPageData.Tables("VoirMachine").Rows(0).Item("Limage")

Session("NbRef") = DSPageData.Tables("VoirMachine").Rows.Count

Dim voirSecteur As String = Session("IDsecteur")

Dim VoirNbNum As Integer = Session("NbRef")

'Création du Cph

Dim intI As Integer = 0

'Dim counter As Integer = 1

For intI = 1 To Session("NbRef")

Session("Num") = intI

Dim lblF As New WebControls.LinkButton

lblF.ID = "lblF" & Session("Num")

AfficheTexte()

With lblF

.Text = Session("Texte")

.Font.Bold = True

.Width = 200

End With

AddHandler lblF.Command, AddressOf LinkButtonF_Command

'Ajouter linkbutton au container (PlaceHolder)

Me.PlhFAB.Controls.Add(lblF)

Next

End Using

End Sub

Public Sub LinkButtonF_Command(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.CommandEventArgs)

If IsPostBack Then

Dim lblF As LinkButton = DirectCast(sender, LinkButton)

Session("IDprod") = Mid(lblF.ID, 5)

Dim lechoix As Integer = Session("IDprod")

lechoix = Session("IDprod")

AfficheChoix()

Dim VoirLaRef As String = Session("Ref")

End If

End Sub

Sub AfficheTexte()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

'connection a la base de données

DBCommand = New OleDbCommand("Select * From Machines Where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Ordre", Session("Num"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "Laref")

Dim Reftexte As String =
DSPageData.Tables("Laref").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("Laref").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub

Sub AfficheChoix()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Parc", Session("IDprod"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "LaMachine")

Session("ImgDuSoin") =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

Dim Reftexte As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub



Emilie



"Patrice" news: %
Comme d'hab :
- quelle est la ligne concernée ?
- un exemple *le plus court possible* qui montre juste ce problème
pourrait permettre te permettre de comprendre et résoudre le problème ou
au pire de permettre à qq d'uatre de le reproduire et de t'aider

Je dirais que le code actuel crée plusieurs contrôles avec le même nom
?..

--
Patrice


"Emilie" news:4ab75e29$0$12653$
Bonjour



J'ai un problème de postback dans une appli web avec VB



J'ai un RadioButtonListe qui permet de choisir entre 3 secteurs
d'activité

Le choix de l'activité déclenche la création d'un ContentPlaceHolder
dans lequel sont créés dynamiquement des linkButton



Au premier affichage je n'ai pas de problème, par contre quand je clic
sur le RadioButtonListe cela Beug et j'ai le message :



System.Web.HttpException: Plusieurs contrôles avec le même ID 'lblF1'
ont été trouvés. FindControl requiert que les contrôles aient des ID
uniques.



J'ai beau cherché je ne trouve pas de solutions, pouvez-vous m'aider



Merci pour votre aide

Emilie














Emilie
Le #20194761
Patrice j'ai trouvé

J'ai supprimé le VoirMachine dans le Form_Load non-postback et postback
Mais je n'avais plus de postback sur lblF
j'ai ajouté sur ma page EnableViewState="True"
Et cela fonctionne

Etait-ce ce qu'il fallait faire ?

Emilie
"Patrice" %
Au chargement de la page on appelle VoirMachine (que l'on soit ou non en
postback). VoirMachine est également appelé via Secteur_Change et c'est
dans VoirMachine que l'on crée les contrôles lblF. Donc si le secteur
change, on appelle deux fois "VoirMachine" (une fois depuis Page_Load, une
fois depuis Secteur_Change) et l'on tente donc de créer deux fois les
mêmes contrôles...

Quelque chose ne va pas dans la logique. Je dirais que dans Form_Load, on
ne doit avoir que les initialisations si on n'est pas en postback. Le
reste de ce qui est arrive en postback est géré via les évènements qui
surviennent et pas dans un Else...

--
Patrice

"Emilie" news:4ab765d5$0$12654$
Bonjour Patrice

Merci pour ta réponse, je suis obligé de te donner tout le code.
Cela Beug sur : Sub Secteur_Change(ByVal sender As Object, ByVal e As
EventArgs)

MON CODE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs)

If Not Page.IsPostBack Then

Session("IDsecteur") = "FAB"

VoirMachine()

Else

PlhFAB.Visible = False

VoirMachine()

End If

End Sub

Sub Secteur_Change(ByVal sender As Object, ByVal e As EventArgs)

RblSecteur.Visible = True

If RblSecteur.SelectedIndex > -1 Then

Session("Secteur") = RblSecteur.SelectedItem.Value

RblSecteur.Visible = True

Select Case Session("Secteur")

Case "Matériel de fabrication"

LblTitre.Text = "MATERIEL DE FABRICATION"

Session("IDsecteur") = "FAB"

Case "Assistance à la fabrication"

LblTitre.Text = "ASSISTANCE A LA FABRICATION"

Session("IDsecteur") = "ASS"

Case "Matériel de métrologie"

LblTitre.Text = "MATERIEL DE METROLOGIE"

Session("IDsecteur") = "MET"

End Select

Dim VoisSecteur = Session("IDsecteur")

VoirMachine()

End If

End Sub

Sub VoirMachine()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "VoirMachine")

Session("ImgFAB") =
DSPageData.Tables("VoirMachine").Rows(0).Item("Limage")

Session("NbRef") = DSPageData.Tables("VoirMachine").Rows.Count

Dim voirSecteur As String = Session("IDsecteur")

Dim VoirNbNum As Integer = Session("NbRef")

'Création du Cph

Dim intI As Integer = 0

'Dim counter As Integer = 1

For intI = 1 To Session("NbRef")

Session("Num") = intI

Dim lblF As New WebControls.LinkButton

lblF.ID = "lblF" & Session("Num")

AfficheTexte()

With lblF

.Text = Session("Texte")

.Font.Bold = True

.Width = 200

End With

AddHandler lblF.Command, AddressOf LinkButtonF_Command

'Ajouter linkbutton au container (PlaceHolder)

Me.PlhFAB.Controls.Add(lblF)

Next

End Using

End Sub

Public Sub LinkButtonF_Command(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.CommandEventArgs)

If IsPostBack Then

Dim lblF As LinkButton = DirectCast(sender, LinkButton)

Session("IDprod") = Mid(lblF.ID, 5)

Dim lechoix As Integer = Session("IDprod")

lechoix = Session("IDprod")

AfficheChoix()

Dim VoirLaRef As String = Session("Ref")

End If

End Sub

Sub AfficheTexte()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

'connection a la base de données

DBCommand = New OleDbCommand("Select * From Machines Where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Ordre", Session("Num"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "Laref")

Dim Reftexte As String =
DSPageData.Tables("Laref").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("Laref").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub

Sub AfficheChoix()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Parc", Session("IDprod"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "LaMachine")

Session("ImgDuSoin") =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

Dim Reftexte As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub



Emilie



"Patrice" news: %
Comme d'hab :
- quelle est la ligne concernée ?
- un exemple *le plus court possible* qui montre juste ce problème
pourrait permettre te permettre de comprendre et résoudre le problème ou
au pire de permettre à qq d'uatre de le reproduire et de t'aider

Je dirais que le code actuel crée plusieurs contrôles avec le même nom
?..

--
Patrice


"Emilie" news:4ab75e29$0$12653$
Bonjour



J'ai un problème de postback dans une appli web avec VB



J'ai un RadioButtonListe qui permet de choisir entre 3 secteurs
d'activité

Le choix de l'activité déclenche la création d'un ContentPlaceHolder
dans lequel sont créés dynamiquement des linkButton



Au premier affichage je n'ai pas de problème, par contre quand je clic
sur le RadioButtonListe cela Beug et j'ai le message :



System.Web.HttpException: Plusieurs contrôles avec le même ID 'lblF1'
ont été trouvés. FindControl requiert que les contrôles aient des ID
uniques.



J'ai beau cherché je ne trouve pas de solutions, pouvez-vous m'aider



Merci pour votre aide

Emilie














Patrice
Le #20195511
Tu as bien ce que tu veux au 1er appel de la page ? Pour le ViewState, cela
veut sans doute dire que qq chose n'est pas initialisé dans ton code (et
activer le viewstate permet de garder l'info entre deux appels).

Je ne sais pas trop quelle est ta logique de départ dans mon cas je ferais
qq chose :
- au chargement j'initialise les données si nécessaires et j'affiche les
LinkButtons
- finalement je n'ai pratiquement rien à faire dans le SelectChange (je me
contente d'effacer le choix en cours qui n'est plus valide puisqu'on vient
de changer de catégorie)
- dans le Command, j'affiche le choix courant

Le veiwState est indispensable car le DataBind n'est fait qu'une fois. Si je
le fais tout le temps je peux me passer normalement du viewstate...

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not IsPostBack Then
' Affichage initial
Dim MySource As New DataTable
MySource.Columns.Add("Value", GetType(String))
MySource.Columns.Add("Text", GetType(String))
MySource.Rows.Add(0, "Option A")
MySource.Rows.Add(1, "Option B")
rbl.DataSource = MySource
rbl.DataBind()
rbl.SelectedIndex = 0
End If
DisplayPlaceHolder()
End Sub
Sub lb_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
' Valeur choisie affiché en cas de click sur LinkButton
MyLabel.Text = "Vous avez choisi " & e.CommandArgument.ToString
End Sub

Sub DisplayPlaceHolder()
For i = 0 To 3
Dim l As New LinkButton
l.ID = "lbl" & i.ToString
l.Text = IIf(rbl.SelectedIndex = 0, "A", "B") & i
l.CommandName = "Select"
l.CommandArgument = l.Text
AddHandler l.Command, AddressOf lb_Command
plh.Controls.Add(l)
plh.Controls.Add(New LiteralControl("<br />"))
Next
End Sub

Private Sub rbl_SelectedIndexChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles rbl.SelectedIndexChanged
' Changement : effacer le choix
MyLabel.Text = ""
End Sub


--
Patrice


"Emilie" news:4ab77e34$0$17751$
Patrice j'ai trouvé

J'ai supprimé le VoirMachine dans le Form_Load non-postback et postback
Mais je n'avais plus de postback sur lblF
j'ai ajouté sur ma page EnableViewState="True"
Et cela fonctionne

Etait-ce ce qu'il fallait faire ?

Emilie
"Patrice" news: %
Au chargement de la page on appelle VoirMachine (que l'on soit ou non en
postback). VoirMachine est également appelé via Secteur_Change et c'est
dans VoirMachine que l'on crée les contrôles lblF. Donc si le secteur
change, on appelle deux fois "VoirMachine" (une fois depuis Page_Load,
une fois depuis Secteur_Change) et l'on tente donc de créer deux fois les
mêmes contrôles...

Quelque chose ne va pas dans la logique. Je dirais que dans Form_Load, on
ne doit avoir que les initialisations si on n'est pas en postback. Le
reste de ce qui est arrive en postback est géré via les évènements qui
surviennent et pas dans un Else...

--
Patrice

"Emilie" news:4ab765d5$0$12654$
Bonjour Patrice

Merci pour ta réponse, je suis obligé de te donner tout le code.
Cela Beug sur : Sub Secteur_Change(ByVal sender As Object, ByVal e As
EventArgs)

MON CODE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs)

If Not Page.IsPostBack Then

Session("IDsecteur") = "FAB"

VoirMachine()

Else

PlhFAB.Visible = False

VoirMachine()

End If

End Sub

Sub Secteur_Change(ByVal sender As Object, ByVal e As EventArgs)

RblSecteur.Visible = True

If RblSecteur.SelectedIndex > -1 Then

Session("Secteur") = RblSecteur.SelectedItem.Value

RblSecteur.Visible = True

Select Case Session("Secteur")

Case "Matériel de fabrication"

LblTitre.Text = "MATERIEL DE FABRICATION"

Session("IDsecteur") = "FAB"

Case "Assistance à la fabrication"

LblTitre.Text = "ASSISTANCE A LA FABRICATION"

Session("IDsecteur") = "ASS"

Case "Matériel de métrologie"

LblTitre.Text = "MATERIEL DE METROLOGIE"

Session("IDsecteur") = "MET"

End Select

Dim VoisSecteur = Session("IDsecteur")

VoirMachine()

End If

End Sub

Sub VoirMachine()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "VoirMachine")

Session("ImgFAB") =
DSPageData.Tables("VoirMachine").Rows(0).Item("Limage")

Session("NbRef") =
DSPageData.Tables("VoirMachine").Rows.Count

Dim voirSecteur As String = Session("IDsecteur")

Dim VoirNbNum As Integer = Session("NbRef")

'Création du Cph

Dim intI As Integer = 0

'Dim counter As Integer = 1

For intI = 1 To Session("NbRef")

Session("Num") = intI

Dim lblF As New WebControls.LinkButton

lblF.ID = "lblF" & Session("Num")

AfficheTexte()

With lblF

.Text = Session("Texte")

.Font.Bold = True

.Width = 200

End With

AddHandler lblF.Command, AddressOf LinkButtonF_Command

'Ajouter linkbutton au container (PlaceHolder)

Me.PlhFAB.Controls.Add(lblF)

Next

End Using

End Sub

Public Sub LinkButtonF_Command(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.CommandEventArgs)

If IsPostBack Then

Dim lblF As LinkButton = DirectCast(sender, LinkButton)

Session("IDprod") = Mid(lblF.ID, 5)

Dim lechoix As Integer = Session("IDprod")

lechoix = Session("IDprod")

AfficheChoix()

Dim VoirLaRef As String = Session("Ref")

End If

End Sub

Sub AfficheTexte()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

'connection a la base de données

DBCommand = New OleDbCommand("Select * From Machines Where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Ordre", Session("Num"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "Laref")

Dim Reftexte As String =
DSPageData.Tables("Laref").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("Laref").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub

Sub AfficheChoix()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Parc", Session("IDprod"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "LaMachine")

Session("ImgDuSoin") =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

Dim Reftexte As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub



Emilie



"Patrice" news: %
Comme d'hab :
- quelle est la ligne concernée ?
- un exemple *le plus court possible* qui montre juste ce problème
pourrait permettre te permettre de comprendre et résoudre le problème
ou au pire de permettre à qq d'uatre de le reproduire et de t'aider

Je dirais que le code actuel crée plusieurs contrôles avec le même nom
?..

--
Patrice


"Emilie" news:4ab75e29$0$12653$
Bonjour



J'ai un problème de postback dans une appli web avec VB



J'ai un RadioButtonListe qui permet de choisir entre 3 secteurs
d'activité

Le choix de l'activité déclenche la création d'un ContentPlaceHolder
dans lequel sont créés dynamiquement des linkButton



Au premier affichage je n'ai pas de problème, par contre quand je clic
sur le RadioButtonListe cela Beug et j'ai le message :



System.Web.HttpException: Plusieurs contrôles avec le même ID 'lblF1'
ont été trouvés. FindControl requiert que les contrôles aient des ID
uniques.



J'ai beau cherché je ne trouve pas de solutions, pouvez-vous m'aider



Merci pour votre aide

Emilie


















Emilie
Le #20209861
Bonjour Patrice

Merci pour ton aide, effectivement c'est mieux ainsi

Cordialement
Emilie
"Patrice"
Tu as bien ce que tu veux au 1er appel de la page ? Pour le ViewState,
cela veut sans doute dire que qq chose n'est pas initialisé dans ton code
(et activer le viewstate permet de garder l'info entre deux appels).

Je ne sais pas trop quelle est ta logique de départ dans mon cas je ferais
qq chose :
- au chargement j'initialise les données si nécessaires et j'affiche les
LinkButtons
- finalement je n'ai pratiquement rien à faire dans le SelectChange (je me
contente d'effacer le choix en cours qui n'est plus valide puisqu'on vient
de changer de catégorie)
- dans le Command, j'affiche le choix courant

Le veiwState est indispensable car le DataBind n'est fait qu'une fois. Si
je le fais tout le temps je peux me passer normalement du viewstate...

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not IsPostBack Then
' Affichage initial
Dim MySource As New DataTable
MySource.Columns.Add("Value", GetType(String))
MySource.Columns.Add("Text", GetType(String))
MySource.Rows.Add(0, "Option A")
MySource.Rows.Add(1, "Option B")
rbl.DataSource = MySource
rbl.DataBind()
rbl.SelectedIndex = 0
End If
DisplayPlaceHolder()
End Sub
Sub lb_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
' Valeur choisie affiché en cas de click sur LinkButton
MyLabel.Text = "Vous avez choisi " & e.CommandArgument.ToString
End Sub

Sub DisplayPlaceHolder()
For i = 0 To 3
Dim l As New LinkButton
l.ID = "lbl" & i.ToString
l.Text = IIf(rbl.SelectedIndex = 0, "A", "B") & i
l.CommandName = "Select"
l.CommandArgument = l.Text
AddHandler l.Command, AddressOf lb_Command
plh.Controls.Add(l)
plh.Controls.Add(New LiteralControl("<br />"))
Next
End Sub

Private Sub rbl_SelectedIndexChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles rbl.SelectedIndexChanged
' Changement : effacer le choix
MyLabel.Text = ""
End Sub


--
Patrice


"Emilie" news:4ab77e34$0$17751$
Patrice j'ai trouvé

J'ai supprimé le VoirMachine dans le Form_Load non-postback et postback
Mais je n'avais plus de postback sur lblF
j'ai ajouté sur ma page EnableViewState="True"
Et cela fonctionne

Etait-ce ce qu'il fallait faire ?

Emilie
"Patrice" news: %
Au chargement de la page on appelle VoirMachine (que l'on soit ou non en
postback). VoirMachine est également appelé via Secteur_Change et c'est
dans VoirMachine que l'on crée les contrôles lblF. Donc si le secteur
change, on appelle deux fois "VoirMachine" (une fois depuis Page_Load,
une fois depuis Secteur_Change) et l'on tente donc de créer deux fois
les mêmes contrôles...

Quelque chose ne va pas dans la logique. Je dirais que dans Form_Load,
on ne doit avoir que les initialisations si on n'est pas en postback. Le
reste de ce qui est arrive en postback est géré via les évènements qui
surviennent et pas dans un Else...

--
Patrice

"Emilie" news:4ab765d5$0$12654$
Bonjour Patrice

Merci pour ta réponse, je suis obligé de te donner tout le code.
Cela Beug sur : Sub Secteur_Change(ByVal sender As Object, ByVal e As
EventArgs)

MON CODE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs)

If Not Page.IsPostBack Then

Session("IDsecteur") = "FAB"

VoirMachine()

Else

PlhFAB.Visible = False

VoirMachine()

End If

End Sub

Sub Secteur_Change(ByVal sender As Object, ByVal e As EventArgs)

RblSecteur.Visible = True

If RblSecteur.SelectedIndex > -1 Then

Session("Secteur") = RblSecteur.SelectedItem.Value

RblSecteur.Visible = True

Select Case Session("Secteur")

Case "Matériel de fabrication"

LblTitre.Text = "MATERIEL DE FABRICATION"

Session("IDsecteur") = "FAB"

Case "Assistance à la fabrication"

LblTitre.Text = "ASSISTANCE A LA FABRICATION"

Session("IDsecteur") = "ASS"

Case "Matériel de métrologie"

LblTitre.Text = "MATERIEL DE METROLOGIE"

Session("IDsecteur") = "MET"

End Select

Dim VoisSecteur = Session("IDsecteur")

VoirMachine()

End If

End Sub

Sub VoirMachine()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "VoirMachine")

Session("ImgFAB") =
DSPageData.Tables("VoirMachine").Rows(0).Item("Limage")

Session("NbRef") =
DSPageData.Tables("VoirMachine").Rows.Count

Dim voirSecteur As String = Session("IDsecteur")

Dim VoirNbNum As Integer = Session("NbRef")

'Création du Cph

Dim intI As Integer = 0

'Dim counter As Integer = 1

For intI = 1 To Session("NbRef")

Session("Num") = intI

Dim lblF As New WebControls.LinkButton

lblF.ID = "lblF" & Session("Num")

AfficheTexte()

With lblF

.Text = Session("Texte")

.Font.Bold = True

.Width = 200

End With

AddHandler lblF.Command, AddressOf LinkButtonF_Command

'Ajouter linkbutton au container (PlaceHolder)

Me.PlhFAB.Controls.Add(lblF)

Next

End Using

End Sub

Public Sub LinkButtonF_Command(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.CommandEventArgs)

If IsPostBack Then

Dim lblF As LinkButton = DirectCast(sender, LinkButton)

Session("IDprod") = Mid(lblF.ID, 5)

Dim lechoix As Integer = Session("IDprod")

lechoix = Session("IDprod")

AfficheChoix()

Dim VoirLaRef As String = Session("Ref")

End If

End Sub

Sub AfficheTexte()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

'connection a la base de données

DBCommand = New OleDbCommand("Select * From Machines Where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Ordre", Session("Num"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "Laref")

Dim Reftexte As String =
DSPageData.Tables("Laref").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("Laref").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("Laref").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub

Sub AfficheChoix()

'connection a la base de données

Using connexion As OleDbConnection = Me.DBConn

Dim DBCommand As OleDbCommand

'Objet Dataset

Dim DSPageData As New DataSet

DBCommand = New OleDbCommand("Select * From Machines where
Parc=? and Ordre=?", DBConn)

'objet DataAdapter

Dim myOleDbDataAdapter As New OleDbDataAdapter(DBCommand)

DBCommand.Parameters.AddWithValue("Parc",
Session("IDsecteur"))

DBCommand.Parameters.AddWithValue("Parc", Session("IDprod"))

myOleDbDataAdapter.SelectCommand.Parameters("Parc").Value =
Session("IDsecteur")

myOleDbDataAdapter.Fill(DSPageData, "LaMachine")

Session("ImgDuSoin") =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

Dim Reftexte As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Descro")

Dim TextAaff As String = Replace(Reftexte, "%", "<BR>")

Session("Texte") =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

LblDescro.Text = "Spécificité : " & TextAaff

Dim VoirImage As String =
DSPageData.Tables("LaMachine").Rows(0).Item("Limage")

ImgMachine.ImageUrl = "~/Image/Machines/" & VoirImage

LblTitre.Text =
DSPageData.Tables("LaMachine").Rows(0).Item("Designe")

ImgMachine.ToolTip = Session("Texte")

End Using

End Sub



Emilie



"Patrice" news: %
Comme d'hab :
- quelle est la ligne concernée ?
- un exemple *le plus court possible* qui montre juste ce problème
pourrait permettre te permettre de comprendre et résoudre le problème
ou au pire de permettre à qq d'uatre de le reproduire et de t'aider

Je dirais que le code actuel crée plusieurs contrôles avec le même nom
?..

--
Patrice


"Emilie" news:4ab75e29$0$12653$
Bonjour



J'ai un problème de postback dans une appli web avec VB



J'ai un RadioButtonListe qui permet de choisir entre 3 secteurs
d'activité

Le choix de l'activité déclenche la création d'un ContentPlaceHolder
dans lequel sont créés dynamiquement des linkButton



Au premier affichage je n'ai pas de problème, par contre quand je
clic sur le RadioButtonListe cela Beug et j'ai le message :



System.Web.HttpException: Plusieurs contrôles avec le même ID 'lblF1'
ont été trouvés. FindControl requiert que les contrôles aient des ID
uniques.



J'ai beau cherché je ne trouve pas de solutions, pouvez-vous m'aider



Merci pour votre aide

Emilie





















Publicité
Poster une réponse
Anonyme