ASP.Net controls avec Javascript

JoeGL Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 28 mai 2008 - 12 févr. 2008 à 19:25
JoeGL Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 28 mai 2008 - 28 mai 2008 à 18:57
Bonjours,

J'aimerais savoir comment il est possible de récupérer des ajouts dans une listbox lorsqu'elles sont faient à partir du javascript.

Voila je fais des ajout d'un textbox à une listbox avec du javascript et lorsque j arrive pour récupérer mes ajouts afin de les mettre dans ma bd apres le post... Il y a aucune donnée visible, sauf si je les ajoutes à la main là elles le sont.

Fonction Javascript:

 function ajoutEcole(form) { var opt new Option(form.txtEcoleFreq.value, form.txtEcoleFreq.value); form.listeEcole.options[form.listeEcole.options.length] opt; form.listeEcole.option.selectedIndex = form.listeEcole.options.length - 1; form.txtEcoleFreq.value = ""; }

Dans ma page load j 'ai mis de mon code Asp:

btnAjout.Attributes.Add("onclick", "javascript:ajoutEcole(form);")

puis lorsque je veux faire un count() par exemple sur ma liste bien il y a rien?? Mais le tout fonctionne bien à l'affichage.

Merci de votre temps.

8 réponses

SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
13 févr. 2008 à 10:18
bonjour,
Auy fait, comment essaies-tu de récupérér le texte ?

SuperBouly
JoeGL Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 28 mai 2008
13 févr. 2008 à 13:49
Bien sur ma liste je fais juste un count pour l'instant et il est toujours à zéro. Mais lorsque je met un item dedans par défaut il le voit! Mais peu importe ce que je ne comprend pas c'est pourquoi ma liste est vide?? C'est assez étrange lorsque mes ajouts sont faient.


 


Si j'essaie de récupéré le texte sa serait par maliste.items(i).text
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
13 févr. 2008 à 14:05
pour voir, essaie request.form("MaListeID")
SuperBouly
JoeGL Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 28 mai 2008
13 févr. 2008 à 17:59
J'aurais vraiment aimé que ta solution soit bonne mais malheureusement j ai  rien dans mon count quand j'écris:


dans mon page load apres les ajouts bien sûr mais il voit toujours ce qui est ajouter au départ.


 


Dim essaie As String = Convert.ToString(Request.Form([listeEcole].Items.Count()))

Dans ma string il me retourne pas grand chose de tres jolie mais le count sur le débug affiche 0.

Dans mon html j ai :

    <select id="listeEcole" style="Z-INDEX: 108; LEFT: 424px; WIDTH: 224px; POSITION: absolute; TOP: 56px; HEIGHT: 70px"
     runat="server" size="4">
    </select>&nbsp;&nbsp;

Là je me demande si le code javascript serait mieux exécuté en code script de ASP.net côter client... Si c'est du code qui va être excuté sans post....

Merci!

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JoeGL Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 28 mai 2008
13 févr. 2008 à 17:59
J'aurais vraiment aimé que ta solution soit bonne mais malheureusement j ai  rien dans mon count quand j'écris:


dans mon page load apres les ajouts bien sûr mais il voit toujours ce qui est ajouter au départ.


 


Dim essaie As String = Convert.ToString(Request.Form([listeEcole].Items.Count()))

Dans ma string il me retourne pas grand chose de tres jolie mais le count sur le débug affiche 0.

Dans mon html j ai :

    <select id="listeEcole" style="Z-INDEX: 108; LEFT: 424px; WIDTH: 224px; POSITION: absolute; TOP: 56px; HEIGHT: 70px"
     runat="server" size="4">
    </select>&nbsp;&nbsp;

Là je me demande si le code javascript serait mieux exécuté en code script de ASP.net côter client... Si c'est du code qui va être excuté sans post....

Merci!
JoeGL Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 28 mai 2008
14 févr. 2008 à 18:20
C'est okay, j'ai appris que c'est normale qu'on ne voit pas mes éléments dans ma liste. Il suffit d'utiliser un champ caché pour avoir accès à mes éléments de ma liste.
zambizi Messages postés 3 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 25 mai 2008
25 mai 2008 à 16:18
salut JoeGL,
Le post est un peu old mais j'ai le même problème !
Peut tus detailler un peu la solution que t'a trouvé, en faite dans les cahmps caché ne permet pas de stocker toute les element d'un liste ?
Merci

 
JoeGL Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 28 mai 2008
28 mai 2008 à 18:57
Tu me donne une bonne question, car ce que j'avais fait est perdu, j'ai développer mes trucs autrement. Voici un bout de code intéressant pour accéder à des contrôles dynamique et regarde ton viewstate "enable viewstate = true"... et du code que j'avais trouver sur le site pour les contrôle dynamique:

********Recuperer Valeur Textbox Dynamique.aspx**********
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Recuperer Valeur Textbox Dynamique.aspx.vb" Inherits="TestExemple.MaPage"%>
<html>
 <head>
  <title>Generer des controles dynamiquement et recuperer leurs evenement et leurs
   valeurs </title>
 </head>
 
  <form id="Form1" method="post" runat="server">
   
  </form>
 
</html>
********Recuperer Valeur Textbox Dynamique.aspx.vb**********
Public Class MaPage
    Inherits System.Web.UI.Page
    Protected WithEvents PlaceHolder1 As System.Web.UI.WebControls.PlaceHolder
    Protected MonRadioButton As New System.Web.UI.WebControls.RadioButtonList
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'On ajoute un peu de text au PlaceHolder
        PlaceHolder1.Controls.Add(New LiteralControl("Déclenchement de l'evenement"))
        'On Configure notre RadiobuttonList
        MonRadioButton.RepeatDirection = RepeatDirection.Horizontal
        MonRadioButton.Width = Unit.Pixel(400)
        MonRadioButton.DataSource = Split("Click,OnChanged", ",")
        MonRadioButton.DataBind()
        MonRadioButton.SelectedIndex = 0
        'Par Défaut on dit que si il change on recharge la page
        MonRadioButton.AutoPostBack = True
        PlaceHolder1.Controls.Add(MonRadioButton)
        Dim MonTextBox As TextBox
        'On fait une boucle pour mettre 10 Textbox
        For i As Integer = 0 To 10
            'On reinstancie le texbox
            'et on le configure
            MonTextBox = New TextBox
            MonTextBox.ID = "TonTextbox" & i
            MonTextBox.Text = MonTextBox.ID
            'Si le radiobutton est sur onchanged
            If MonRadioButton.SelectedValue = "OnChanged" Then
                'On dit que des que le texbox change il fait un postback
                MonTextBox.AutoPostBack = True
                'Quand le textbox change il execute MonTextBox_TextChanged
                AddHandler MonTextBox.TextChanged, AddressOf MonTextBox_TextChanged
            End If
            'On ajoute notre textbox dans le Placeholder puis un saut de ligne
            PlaceHolder1.Controls.Add(MonTextBox)
            PlaceHolder1.Controls.Add(New LiteralControl("
"))
        Next
        'On en a plus besoin donc on peut l'enlever de la memoire
        MonTextBox.Dispose()
        'Si on est sur click
        If MonRadioButton.SelectedValue = "Click" Then
            'On va rajouter un bouton
            Dim LeBouton As New Button
            LeBouton.Text = "valider"
            'On lie le click du bouton à l'evenement on l'ajoute au placeholder
            AddHandler LeBouton.Click, AddressOf LeBouton_Click
            PlaceHolder1.Controls.Add(LeBouton)
        End If
    End Sub
    Private Sub MonTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        'On crée un nouveau textbox
        Dim LeTextBox As New TextBox
        'On Assigne notre nouveau textbox, avec l'objet qui nous a envoyé ici
        'On voit ainsi l'importance de sender
        LeTextBox = CType(sender, TextBox)
        'Un peu de text pour verifier que ca marche bien
        Response.Write("Vous venez de modifié : " & LeTextBox.ID & " avec la valeure : " & LeTextBox.Text)
    End Sub
    Private Sub LeBouton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim LeTextBox As TextBox
        For i As Integer = 0 To 10
            Try
                'idem que si dessus sauf que la on cherche le textbox
                'dans la page, on fait donc une boucle sur tous les 10 textbox
                LeTextBox = New TextBox
                LeTextBox = CType(Page.FindControl("TonTextbox" & i), TextBox)
                'Un peu de text
                Response.Write("Texbox N°" & i & " : " & LeTextBox.Text & "
")
            Catch ex As Exception
                'Une connerie vient d'etre faite
                'Surement parce que le texbox recherché n'existe pas
            End Try
        Next
    End Sub
End Class
Rejoignez-nous