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 :

Texte dans page aspx à passer en paramètre dans un webservice


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Par défaut Texte dans page aspx à passer en paramètre dans un webservice
    Bonjour,

    J'ai quelques problèmes en asp.net, c'est un langage assez nouveau pour moi.

    Je souhaite faire une page assez simple, du type

    <Titre de la page>

    <Titre du texte 1>
    <Contenu du texte 1>
    <Bouton 1>

    <Titre du texte 2>
    <Contenu du texte 2>
    <Bouton 2>

    <Titre du texte 3>
    <Contenu du texte 3>
    <Bouton 3>

    Je voudrais qu'en cliquant sur le bouton i, j'appelle un webservice qui retourne un résultat (disons un string) dépendant du texte i. Et qu'une fenêtre popup s'ouvre, affichant le titre du texte i ainsi que le résultat retourné.

    Jusqu'à maintenant, à la place des textes j'avais un seul objet asp:TextBox dont je récupérais simplement la valeur par TextBox.Text dans ma_page.aspx.cs. Donc c'était facile.
    Maintenant, le fait que je remplace ça par un texte (qui est pour l'instant dans une balise html type <div> ou <span>) me complique les choses car je ne sais pas comment récupérer la valeur dans le .cs

    C'est une simple page que je fais uniquement pour une demo, donc peu importe que les textes soient écrits en dur dans la page aspx.

    J'ai l'impression d'avoir plusieurs solutions qui s'offrent à moi.

    - trouver un objet asp, une balise ou qqch dans quoi je mettrai mes titres & contenus dans la page aspx, afin de pouvoir les récupérer comme paramètres dans mon cs quand je clique sur le bouton (je sais pas si c'est clair, j'espère que oui)

    - mettre les titres et contenus dans le web.config pour pouvoir les récupérer avec un ConfigurationManager.AppSettings...
    * chiant à faire, notamment devoir remplacer les caractères spéciaux comme les ";
    * rien trouvé de mieux pour l'instant que les objets Label (<asp:Label id="LblTitre1" runat="server" __designer:wfdid="w12" Text="Label1"></asp:Label>), ce qui ne me semble pas le plus propre;
    * et d'ailleurs ça me fait un NullReferenceException sur le Label:
    Object reference not set to an instance of an object.
    que je n'ai pas comprise.

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    string _TITLE_1;
    string _CONTENT_1;
     
    public _Default()
    {
    	_TITLE_1 = ConfigurationManager.AppSettings["Title_1"];
    	_CONTENT_1 = ConfigurationManager.AppSettings["Content_1"];
     
    	// Créé 2 labels sur ma page aspx, et je veux les remplir avec les valeurs dans le web.config
     
    	LblTitre1.Text = _TITLE_1; // >> NullReferenceException
    	LblContenu1.Text = _CONTENT_1;
    }


    - utiliser un javascript, ce qui parait-il serait le mieux... mais je n'en ai jamais fait.

    merci d'avance pour vos infos et désolé encore pour cette énième question.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    j'ai un peu du mal a comprendre...
    mais as tu créer ton webservice ? est ce qu'il renvoi la bonne valeur ?

    jjameau

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Par défaut
    Ok je me suis relu, et c'est imbitable

    Je vais simplifier mon problème en posant les questions une par une.

    Jusqu'ici, j'avais un asp:textbox et un bouton.

    Code default.aspx : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:TextBox id="MonTexte" runat="server" __designer:wfdid="w2" Rows="10" Width="1000px" TextMode="MultiLine">
    <asp:Button id="MonBtn" onclick="MonBtn_Click" runat="server" __designer:wfdid="w15" />

    En cliquant sur ce bouton, ça appelle dans le cs une fonction MonBtn_Click, qui appelle un webservice. Le texte de ma page asp est en paramètre de ce webservice.

    Code default.aspx : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void MonBtn_Click(object sender, ImageClickEventArgs e)
    {
      // fait des trucs
      string ma_reponse = <mon_client_webservice>.<mon_webservice>((MonTexte.Text.Trim());
      // fait des trucs
     
    }

    Mon webservice est créé, et marche apparemment bien. donc tout ça marchait.

    Maintenant je veux une page avec plusieurs textes, et plusieurs boutons associés.

    texte1
    bouton1

    texte2
    bouton2

    etc...

    et donc je me dis que :

    - soit je fais un copier-coller de tout ça en faisant une fonction par bouton
    - soit j'ai un moyen d'utiliser la seule fonction MonBtn_Click, et je trouve le moyen d'ajouter un paramètre (mon texte). Comme ça il continuera à appeler mon webservice, mais avec le texte correspondant au bouton sur lequel j'ai cliqué.

    Donc c'est TRES simple comme problème, pour quelqu'un qui s'y connait. (donc pour moi c'est pas simple du tout )

    voila

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    tu peux faire comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim b As Button
            b = CType(sender, Button)
            Dim s As String = b.CommandArgument
            Dim t As TextBox
            t = CType(Me.Page.FindControl(s), TextBox)
        End Sub
    il faut que tu passe un CommandArgument a ton boutton avec pour valeur l'ID du textbox associé

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Button ID="Button2" runat="server" CommandArgument="id_txtbox" Text="test" /></div>
    ps: pense aussi a rajouter controle d'erreur si tu ne trouve pas ton controle dans la page

    jjameau

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    pas fais attention mais mon ex est en vb.net

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 39
    Par défaut
    pas de souci, même si je ne maîtrise pas le VB j'ai saisi l'idée.

    Donc comme tu l'expliquais, il suffisait de :

    - remplacer dans la balise button le onclick par un oncommand;
    - ajouter commandargument="<mon_argument>" dans cette même balise;
    - de même pour le commandname (ça ne semble pas obligatoire, je l'ai fait quand même par "souci de propreté")
    - dans le .aspx.cs, remplacer le paramètre eventargs de la fonction MonBtn_Click(object sender, trucmucheClickEventArgs e) par MonBtn_click(object sender, CommandEventArgs e)
    - et hop, après il me suffit de faire un switch sur la valeur de e.CommandArgument.ToString() et/ou e.CommandName, pour en faire ce que je veux.

    Merci beaucoup d'avoir pris le temps de répondre, même si comme d'habitude le niveau de mes questions ne vole pas haut

Discussions similaires

  1. Passer plusieurs paramètres dans un callback (débutant!)
    Par pilouface dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 07/02/2007, 20h42
  2. applet java dans page ASPX
    Par volivi dans le forum Applets
    Réponses: 1
    Dernier message: 06/11/2006, 21h12
  3. Réponses: 2
    Dernier message: 11/10/2006, 13h37
  4. Réponses: 1
    Dernier message: 21/03/2006, 14h29
  5. Passer un paramètre dans le script
    Par ipeteivince dans le forum Windows
    Réponses: 2
    Dernier message: 02/03/2006, 17h00

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