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
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.'null' a la valeur Null ou n'est pas un objet.
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 :
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 <%@ 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>
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
Partager