Bonjour

J'avais récupérer ici même du code pour faire ce genre de chose, mais là, je sèche sur un point particulier car mon contexte à un poil changé, je suis contrains de tout faire en CodeBehind.

Je place le code HTML et CodeBehind à la fin du topic, j'ai tout mis pour être clair.

Le code que je founis affiche deux Textbox, la première dans laquelle on va saisir un code postal, la seconde qui va aficher un ID suite au click dans la liste déroulante qui apparait à la suite du code postal.

Sur une autre page dans mon site, ça marche bien, mais le Jscript est dans le Code HTML.
Là, je n'ai pas d'autre choix que de l'injecter à partir du CodeBehind car cela fait partie d'une Sub de création de contrôle dans un formulaire.

Lorsque je choisi une ville dans la lsite, j'ai une erreur Jscript qui apparait
'null' a la valeur Null ou n'est pas un objet.
Je me doute bien qu'il parle de la TextBox que je cherche, mais je ne trouve pas le moyen de lui indiquer où elle est puisqu'elle est créée à la volée.

Je vous laisse juge de mon code, dans l'espoir que quelqu'un puisse m'aider, car je sèche et l'ennui c'est qu'il pleut aujourd'hui, alors, c'est pas cool.....

Code HTML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test.aspx.vb" Inherits="test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Page sans titre</title>
</head>
<body>
    <form id="form1" runat="server">
    <ajax:ScriptManager ID="smTest" runat="server"></ajax:ScriptManager>
    <asp:PlaceHolder ID="phGlobal" runat="server"></asp:PlaceHolder>
    </form>
</body>
</html>
CodeBehind
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
 
 
Partial Class test
	Inherits System.Web.UI.Page
 
	Private tblFormulaire As New Table
 
	Sub CreationTXTListe(ByVal nom As String, ByVal libelle As String, ByVal rfvMsgErr As String, ByVal ServiceMethod As String, ByVal onClientSelectedItem As String, ByVal MinimumPrefixLength As Int16)
		Dim r As New TableRow
		Dim c1, c2, c3 As New TableCell
		Dim l As New Label
		Dim t, th As New TextBox
		Dim rfv As New RequiredFieldValidator
 
		r.ID = "row" & nom
		c2.ID = "cell" & nom
		t.ID = "txt" & nom
		th.ID = "hf" & nom
		th.CssClass = "invi"
		l.Text = libelle
		With rfv
			.ErrorMessage = rfvMsgErr
			.ControlToValidate = t.ID
		End With
 
		Dim ace As New AjaxControlToolkit.AutoCompleteExtender
		With ace
			.ID = "ace" & t.ID
			.ServiceMethod = ServiceMethod
			.OnClientItemSelected = onClientSelectedItem
			.MinimumPrefixLength = MinimumPrefixLength
			.TargetControlID = t.ID
			.UseContextKey = True
			.Enabled = True
			.ServicePath = "~/ListeDynamique.asmx"
		End With
		c3.Controls.Add(th)
		If rfvMsgErr <> "" Then
			c3.Controls.Add(rfv)
		End If
		c1.Controls.Add(l)
		c2.Controls.Add(t)
		c2.Controls.Add(ace)
		r.Cells.Add(c1)
		r.Cells.Add(c2)
		r.Cells.Add(c3)
		tblFormulaire.Rows.Add(r)
		Me.Page.ClientScript.RegisterClientScriptBlock(Me.GetType, "monScript", "<script type='text/javascript'> var " & onClientSelectedItem & " = function(sender, e){		$get('<%=CType(phGlobal.FindControl(""tblFormulaire"").FindControl(""row" & nom & """).FindControl(""cell" & nom & """).FindControl(""hf" & nom & """), TextBox).ClientID%>').value = e.get_value(); }</script>")
	End Sub
 
	Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
		CreationTXTListe("ville", "Ville au choix : ", "faut en donner une", "GetVilleCodePostal", "tbCity_ClientItemSelected", 5)
		phGlobal.Controls.Add(tblFormulaire)
	End Sub
End Class