Récupérer un contrôle dynamique dans le ViewState
Bonjour tout le monde
Je suis confronté à un souci que je ne maitrise pas car je ne connais pas trés bien la manipulation du ViewState.
Le contexte est un peu complexe mais je vais tenté de faire simple :
je place un GridView dans le HTML et je le rempli par code Behind. Dans ce GRridView j'ai mis un ButtonField qui lance une action que j'ai placé dans une Sub (pour la lisibilité du code)
Code:
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
|
Protected Sub OptionParagaphe(ByVal IdCompo As String)
Dim ddl As New DropDownList
Dim dtParagraphe As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.EG_ListeParagraphe '" & Session("SES_ApplicationStr") & "'")
With ddl
.ID = "ddlParagraphe"
.EnableViewState = True
.DataSource = dtParagraphe
.DataTextField = "Para_Titre"
.DataValueField = "ParagrapheId"
.DataBind()
End With
Dim lblDDL As New Label
With lblDDL
.Text = "Choisir un paragraphe de texte dans la liste "
End With
With celOption
With .Controls
.Add(lblDDL)
.Add(New LiteralControl(" "))
.Add(ddl)
End With
End With
End Sub |
Comme vous pouvez le voir, cela créer une DDL. C'est elle qui me préoccupe, mais je vais avoir d'autre cas avec d'autres types de contrôles.
Dans mon HTML j'ai également un bouton (qui est jsute en dessous, dans un autre TableRow) de la "CelOption".
En cliquant sur ce bouton j'enregistre les informations qui ont été saisie.
Le problème que j'ai est qu'il n'y a pas de contrôle dans le "CelOption" lorsque je clique sur le bouton à en juger par cela :
Code:
1 2 3 4 5 6 7 8 9
|
Protected Sub btnEnrOption_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEnrOption.Click
Dim btn As Button = sender
Dim ddl As DropDownList = celOption.FindControl("ddlParagraphe")
ici Logage(celOption.Controls.Count)
Dim idCompo As String = btn.CommandArgument
Dim sel As String = ddl.SelectedValue
End Sub |
La ligne de logage me retourne 0.
Du coup, je me suis dis que les infos devaient être dans le ViewState, mais je ne trouve pas comment aller cherche ma DDL dans le ViewState, je ne comprends les explications que je trouve dans la MSDN.
Subsidiairement, est ce le fait de mettre
Code:
.EnableViewState = True
sur ma DDL est suffisant pour la récupérer ?
Merci pour votre aide.