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 :

Accéder en javascript à une colonne personnalisée d'un gridview


Sujet :

ASP.NET

Vue hybride

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut Accéder en javascript à une colonne personnalisée d'un gridview
    Bonjour,

    J'ai un gridview avec une colonne personnalisée sous la forme d'un textbox :

    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
    <asp:GridView runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="Code" >
          <Columns>
    <asp:hyperlinkfield datatextfield="Code" 
                ...>
       <asp:TemplateField>
                <HeaderTemplate>
              <asp:Label ID="Label1" runat="server" Text="Zone texte"></asp:Label>
                </HeaderTemplate>
                <ItemTemplate>
                <asp:TextBox ID="Commentaires" runat="server" Width="300px" ></asp:TextBox>
     </ItemTemplate>
          </asp:TemplateField>
     
      </Columns>
     </asp:GridView>
    Je voudrais accéder à mon textbox 'Commentaires' dans une fonction javascript.
    J'ai essayé cela, mais mon composant n'est pas reconnu :

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript">
         function ChargementTexte()
          {
             //Récupère les références des deux textbox
             var TextBoxMere = document.getElementById("<%= Commentaires.ClientID %>");
          }   
    </script>

    Est-ce que quelqu'un verrait ce qui manque? Merci.

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    "Commentaires" est un contrôle qui appartient a ta gridview il est invisible en dehors de celle ci, et même plus en dehors de la ligne ou il va être instancié. Pour le retrouver il faut demander a sa ligne de le retrouver .

    typiquement, on utilise l'évènement onrowdatabound de ta grid view et ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.row.findControl("Commentaires")

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Ok d'habitude j'utilise aussi cet événement, mais dans mon cas cela pose problème. Est ce qu'il y aurait tout de même un autre moyen d'accéder au composant du gridview dans la fonction javascript (qui se trouve dans la page aspx) sans passer par l'évenement onrowdatabound ?

    Merci.

  4. #4
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Est ce qu'il y aurait tout de même un autre moyen d'accéder au composant du gridview dans la fonction javascript (qui se trouve dans la page aspx) sans passer par l'évenement onrowdatabound ?
    oui tous les évènement lies a la ligne .

    Ok d'habitude j'utilise aussi cet événement, mais dans mon cas cela pose problème.
    Il ne devrait pas y en avoir de problème. Donne plus de détail sur ce que tu souhaites faire.

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    J'imagine que ta question est liée au post dans lequel tu essayes d'affecter le contenu d'un textbox t2 situé dans une popup modale à un textbox t1 situé dans une gridview.

    Les contrôles situés dans une grid ont un id unique. Tu peux donc récupérer cet id de contrôle et lui affecter une valeur par JS.

    Sinon, l'autre solution consiste selon moi à générer un postback au clic sur le CancelControlID de ta popup.
    Dans l'event JS OnCancelClick(), tu récupères l'unique id de ton CancelControlID, et génère un postback à l'aide de ScriptManager.GetPostbackEventReference. (la fonction doit être définies depuis le .cs)
    Dés lors, tu te retrouve dans un event server habituel dans lequel tu récupères les contenu de t2 et l'affecte à la source de données de ta grid.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Oui c'est bien pour rejoindre mon autre post mais je voulais trouver une méthode alternative.

    J'ai essayé de tester différentes choses concernant la méthode ScriptManager.GetPostbackEventReference en regardant différents exemples sur internet mais je n'ai pas bien compris comment l'utiliser dans mon cas :

    Pour l'instant, j'ai définie ma fonction javascript :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript">
         function ChargementTexte()
          {
             //Récupère les références des deux textbox
             var ControleID = document.getElementById("<%= LienFermerFenetre.ClientID %>");
     
          }   
    </script>

    Et quand tu parle de l'utilisation Page.ClientScript.GetPostBackEventReference, tu parle de l'utiliser dans le page load où directement dans l'évenement databound de cette manière ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (e.Row.RowType == DataControlRowType.DataRow)
            {            
     
                e.Row.Attributes.Add("onclick",Page.ClientScript.GetPostBackEventReference(sender,?)
     
            }

Discussions similaires

  1. [Débutant] Création d'une colonne personnalisée
    Par Expendables dans le forum Développement Sharepoint
    Réponses: 16
    Dernier message: 12/02/2014, 12h58
  2. Référencer une colonne personnalisée dans une définition de liste
    Par nicolas.pied dans le forum Développement Sharepoint
    Réponses: 4
    Dernier message: 03/09/2012, 13h01
  3. Récupérer une colonne personnalisée supprimée
    Par DrakkoFR dans le forum SharePoint
    Réponses: 1
    Dernier message: 22/07/2008, 23h53
  4. Une colonne compteur dans un GridView
    Par zooffy dans le forum ASP.NET
    Réponses: 1
    Dernier message: 21/01/2008, 15h14
  5. Réponses: 4
    Dernier message: 09/08/2007, 16h04

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