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 :

gridview, boundfield, DataFormatString [Débutant]


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
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Par défaut gridview, boundfield, DataFormatString
    Bonjour,

    Je suis un petit peu débutant avec l'asp.net, et je suis confronté à un petit problème !

    Dans mon fichier .aspx
    Je possède une gridview, contenant plusieurs boundfield. Ces boundfield ont entre autre un attribut DataFormatString.
    Voici un exemple d'un de mes boundfield :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <asp:BoundField DataField="col1" runat="server" DataFormatString="<a href=test.aspx?nom=test class="lien"> {0} </a>">
    ...
    </asp:BoundField>
    La partie qui m'intéresse ici est le DataFormatString avec son lien.

    Je voudrais, dans mon fichier aspx.cs, accéder à chacun de mes éléments boundfield, et modifier leur attribut DataFormatString dans le but de modifier l'URL du lien.
    Suivant le boundfield traité, l'utilisateur en cours, et de nombreux autres paramètres, l'url doit être modifiée.

    Le problème est que je ne sais pas comment faire ! J'ai essayé plusieurs méthodes mais impossible d'accéder à cet attribut ou de le modifier !

    Petite précision : je ne souhaite pas modifier la partie {0} du lien, uniquement son URL ! Et je dois absolument faire cette modification dans le fichier aspx.cs (sinon je ne sais pas comment je vais faire pour retrouver la bonne URL à partir de tous les paramètres cités plus haut !)

    Merci d'avance pour votre aide =)

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Il vaut mieux faire ça dans l'évènement RowDataBound du GridView. Un petit exemple ici, et .
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Par défaut
    Merci pour votre réponse !

    Après recherches, j'ai réussi à faire la chose suivante dans une de mes fonctions du fichier aspx.cs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((BoundField)Grille.Columns[0]).DataFormatString = ...;
    Ce qui est bien ! J'arrive à modifier mes liens maintenant !

    Ce que je n'arrive pas à faire, c'est les modifier individuellement ! En effet, j'ai besoin de modifier toute ma colonne 0, mais le lien de la ligne 0 doit etre différent de celui de la ligne 1 etc...

    Or la, toutes mes lignes de ma colonne 0 ont le même lien..

    Si j'accède à une ligne en particulier dans ma colonne 0, alors je ne peux plus caster en (BoundField), du coup je ne peux plus modifier l'attribut DataFormatString !

    Y a-t-il une astuce ?

    Merci d'avance !

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Est-ce que tu peux poster ton code pour voir ce qui se passe de manière un peu plus claire ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Par défaut
    Et bien j'ai tout donné concernant les boundfield et ce que je veux faire.. je ne peux pas en donner beaucoup plus désolé..

    Après le but est que j'ai quelque chose qui ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i = 0; i < nbLignes; ++i) 
    {
    ((BoundField)Grille.Rows[i].Columns[0]).DataFormatString = "<a href=test.aspx?param="+param+">{0}</a>";
    }
    avec param un paramètre variable suivant la ligne, récupéré ailleurs !

    sauf que ça ne compile pas puisque ce que je récupère n'est pas un boundfield..

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Il est parfois plus pratique de déporter une partie du code dans le code inline que de tenter de tout contrôler dans le code behind. Au bout de ce lien se trouve un paragraphe où un scriptlet permet d'afficher les données d'une source. Tu peux remplacer l'appel de la valeur de la propriété par l'appel d'une fonction. A cette fonction tu passes l'élément de ta source de données en cours de traitement. Dans le fonction tu peux faire les tests que tu souhaites pour renvoyer la chaîne à afficher.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. gridview et boundfield
    Par topolino dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/10/2008, 00h18
  2. Boundfield visible dans Gridview
    Par Mvu dans le forum ASP.NET
    Réponses: 8
    Dernier message: 27/06/2008, 11h49
  3. Réponses: 7
    Dernier message: 13/02/2008, 10h22
  4. [C#] Gridview itemTemplate et boundfields
    Par LE NEINDRE dans le forum C#
    Réponses: 1
    Dernier message: 27/06/2007, 11h29
  5. [GridView] Footer dynamique d'un boundField
    Par davasm dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/06/2006, 14h07

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