IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

dropdownlist disabled clientSide, plus de valeur ServeurSide


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut dropdownlist disabled clientSide, plus de valeur ServeurSide
    Bonjour à tous,
    un petit problème viens de surgir : les actions effectuées coté client influent sur le comportement coté serveur. Je m'explique :

    Je remplie une DropDownList coté serveur a la creation de la page, lui affecte les bonnes valeurs .... jusque là tout va bien.

    Coté CLIENT, je met la propriété 'disabled' de la dropdownlist à 'true'.
    Lors du postback, un response.write de la valeur de la DropDownList ne renvoie rien.

    Voici le morceau ce code
    test.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <asp:DropDownList ID="v_ListboxPays" runat="server" EnableViewState="true" AutoPostBack="true"></asp:DropDownList>
       <asp:Button runat="server" ID="v_btnValider" Text="valider" />
    text.aspx.vb
    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
     
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            'Response.Write(Server.UrlEncode("&"))
            Dim v_strScript As String = String.Empty
            If Not IsPostBack Then
                fillListBoxPaysAll(v_ListboxPays)
                For Each v_item As ListItem In v_ListboxPays.Items
                    If v_item.Value = "41" Then
                        v_item.Selected = True
                    End If
                Next
     
                v_strScript &= "document.getElementById('" & v_ListboxPays.ClientID & "').disabled = true;" & vbCrLf
                ClientScript.RegisterStartupScript(Me.GetType, "test", v_strScript, True)
            End If
    End Sub
     
     Protected Sub v_btnValider_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles v_btnValider.Click
            Response.Write("pays : " & v_ListboxPays.SelectedValue)
    End Sub
    Voila, si je n'execute pas le "ClientScript...." tout fonctionne correctement.
    Dans le cas contraire, je ne recupere aucune valeur.

    J'ai déjà une solution, je remet la propriété disable à false juste avant le postaback avec le morceau de code suivant dans le pageLoad:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    v_btnValider.Attributes.Add("onclick", "document.getElementById('" & v_ListboxPays.ClientID & "').disabled = false;")
    ....mais bon ca reste du bidouillage, pas terrible donc.

    Si quelqu'un a une explication sur ce comportement, ou bien quelconque autre information je suis preneur.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    J'ai une expliquation car j'ai déjà rencontré ce problème mais je ne sais pas ce qu'elle vaut

    D'après moi: qd tu passes par une fonction js appelée "classiquement", elle est appelée avant le script qui déclenche le PostBack.
    Par contre, si tu passes par ton_control.Add("...", "...) alors c'est le script qui provoque le PostBack qui est appelé en 1er puis la fonction js.

    Voilà ce que je pense

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut
    C'est quand même bizarre, d'avoir une valeur coté serveur uniquement si la dropdownlist est disabled=false coté client et cela peut importe peu importe a quel moment on met les disabled=false, disabled=true...
    Je vais jeter un oeil sur la msnd2 de microsft pour savoir si on a des info sur ce comportement car sur la plupart des sites sur lesquels je suis allé, il n'y a que des solutions (bidouillages un peu comme celui que j'ai présenté précédemment) mais pas de réelle explication.

    Merci pour ta réponse

Discussions similaires

  1. isoler les 2 plus grandes valeurs d'une liste
    Par marlene.ln dans le forum Access
    Réponses: 3
    Dernier message: 29/01/2007, 10h22
  2. VBA_E : Selection des 5 plus grandes valeurs d'une colonne..
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/09/2006, 17h39
  3. vba-Excel-Plus grande valeur d'une colonne
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 08/08/2006, 10h50
  4. [XPath]fonction récupérer plus grand valeur d'un attribut ?
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 18/05/2006, 14h27
  5. [Debutante] trouver les 5 plus grandes valeurs
    Par Sarrus dans le forum Langage SQL
    Réponses: 11
    Dernier message: 25/07/2005, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo