Injecter une valeur dans un champs TextBox avec du Jscript
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
Citation:
'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:
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:
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 |