begin process at 2012 05 28 12:00:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Divers

 > 

Autre

 > 

recupérer des données dans un gridview


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

recupérer des données dans un gridview

jeudi 8 janvier 2009 à 11:29:38 | recupérer des données dans un gridview

lylyboop

Bonjour,

Je travail sur un projet ASP.net, dans ma dernière colonne de mon gridview il y a un lien reçevant en paramètre les données de deux autres colonnes. Pour chaque ligne donc le lien change.
Comment dois-je faire pour récupérer ces données ?

Merci d'avance.
dimanche 11 janvier 2009 à 02:22:42 | Re : recupérer des données dans un gridview

ggtry

Réponse acceptée !
Bonsoir,

Tu peux récupérer tes données sur l'événement rowdatabound, puis définir l'hyperlink.
Cela dépend en partie de la manière dont les données sont entrées dans ton gridview. Dans l'exemple ci-dessous, l'hyperlink est dans un templatefield, la récupération des cellules étant bien entendu à adapter à ton cas  :
(nb. j'ai supposé que tu passais tes données dans un querystring...)
 
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim o As String = e.Row.Cells(1).Text
            Dim a As String = e.Row.Cells(2).Text
            Dim h As HyperLink = CType(e.Row.FindControl("Hyperlink1"), HyperLink)
            h.NavigateUrl = "tonlien.aspx?toto=" & o & "&kiki=" & a
        End If
    End Sub


GGtry
lundi 12 janvier 2009 à 09:42:13 | Re : recupérer des données dans un gridview

annitwi

Bonjour,

Merci beaucoup pour ton aide elle m'a beaucoup aidée !
Je travail en c# et mes données du gridview sont passées en procédures stockées !
J'ai donc procédé à la récupération de mes données par la procédure stockées.
Mais j'ai un autre soucis ... je n'arrive pas à définir que mon type de colonne doit-être un buttonfield !
Pourrais-tu m'aider ? ou quelqu'un d'autre?

Merci d'avance !
lundi 12 janvier 2009 à 10:17:10 | Re : recupérer des données dans un gridview

lylyboop

Bonjour ggtry,

Merci beaucoup pour ta réponse !
Mais comme annitwi je travail en c# et j'ai moi aussi récupéré mes données par procédures stockées !
Et je me retrouve avec le même problème de définition du type de colonne voilà un bout de code en espérant que tu pourras m'aider :

if (dts_evt.Tables[0].Columns[i].ToString() == "lien")
        {
            //définition du type de colonne buttonfield
        }
        else
        {
            if (dts_evt.Tables[0].Columns[i].ToString() == "im")
            {
                //définition du type de colonne buttonfield
            }
        }

merci pour l'aide !
lundi 12 janvier 2009 à 11:31:32 | Re : recupérer des données dans un gridview

ggtry

Bonjour,

Je ne suis pas sûr de comprendre ce que vous voulez faire.
Vous voulez un buttonfield, et pas un hyperlink dans un templatefield ?
Pour récupérer le contrôle d'un buttonfield défini à link, vous pouvez faire (désolé, je ne code pas en c# et je donne un code vb pour ne pas faire d'erreur de syntaxe, mais ce doit être en principe facile à traduire) :
Dim c As LinkButton = e.Row.Cells(x).Controls(0) (où x est égal au numéro de cellule).
S'il s'agissait d'un hyperlinkfield, il suffirait donc de faire, par exemple :
Dim b As HyperLink = e.Row.Cells(5).Controls(0)
b.NavigateUrl = "tonlien.aspx?toto=" & o & "&kiki=" & a
Mais avec un buttonfield, cela n'est pas possible. Une solution (s'il ne s'agit que de naviguer) est de passer le lien ou le paramètre dans le commandargument du button, dans le même événement rowdatabound, en donnant un commandname quelconque pour différencier, puis de lancer la page sur l'événement rowcommand.
1/ Sur le rowdatabound :

 Dim c As LinkButton = e.Row.Cells(5).Controls(0)
            c.CommandArgument = "tonlien.aspx?toto=" & o & "&kiki=" & a
            c.CommandName = "envoyer"

2/ Et sur l'événement rowcommand :

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
        If e.CommandName = "envoyer" Then
            Response.Redirect(e.CommandArgument)
        End If
    End Sub

GGtry
lundi 12 janvier 2009 à 11:43:36 | Re : recupérer des données dans un gridview

lylyboop

Re bonjour,

en fait je penser qu'avec un buttonfield je pouvez me rediriger vers une autre page ...
En tout cas merci beaucoup de prendre la peine de me répondre !
En fait dans mon code je fait une boucle pour créer mes colonnes :
for (i = 0; i < dts_evt.Tables[0].Columns.Count; i++)
      {
        //boucle pour ajouter explicitement chaque colonne du gridview sinon la propriete Columns.Count du gridView n'est pas mise a jour !!!
        BoundField bnd_Colonne = new BoundField();
        ...

Et c'est dans cette boucle que je souhaite ajouter un test pour savoir que si la colonne = "machin"
alors je définit cette colonne comme hyperlink mais c'est là que ça coince coté asp je sais la définir mais je dois le faire en c#. J'espère avoir été assez clair dans mon explication ...
Est-ce que tu serais comment faire ?

Lylyboop
lundi 12 janvier 2009 à 13:25:38 | Re : recupérer des données dans un gridview

ggtry

Rebonjour,

Je ne suis pas sûr de tout comprendre, parce que c'est toujours le même principe que pour un boundfield, par exemple (en vb) :
       Dim h As New HyperLinkField
        h.Text = "Lien"
        h.HeaderText = "Mon lien"
             ... autres propriétés...
        GridView1.Columns.Add(h)

Tu peux faire ça sur l'init de ta gridview. Pour définir ton navigateurl, tu peux le faire plutôt sur le rowdatabound.

(Pour le buttonfield : je ne crois pas qu'il y ait un accès à la propriété postbackurl du button dans ce cas. En tout cas, un button sert typiquement à faire un postback, pas à naviguer directement. Tu peux essayer de passer par un templatefield avec un button dedans).

GGtry
lundi 12 janvier 2009 à 13:46:43 | Re : recupérer des données dans un gridview

lylyboop

Voici mon code en entier :

      int i = 0;
      for (i = 0; i < dts_evt.Tables[0].Columns.Count; i++)
      {
        //boucle pour ajouter explicitement chaque colonne du gridview
        //sinon la propriete Columns.Count du gridView n'est pas mise a jour !!!
        BoundField bnd_Colonne = new BoundField();
        bnd_Colonne.HeaderText = dts_evt.Tables[0].Columns[i].ColumnName;
        bnd_Colonne.DataField = dts_evt.Tables[0].Columns[i].ColumnName;
        if (dts_evt.Tables[0].Columns[i].ToString() == "lien")
        {
                       
        }
      
        //et enfin ajout de ma nouvelle colonne
        grdEvt.Columns.Add(bnd_Colonne);
        grdEvt.Columns[i].SortExpression = bnd_Colonne.DataField;

En gros de 0 a dts_evt.Tables[0].Columns.Count j'ajoute des colonnes a mon gridview dont leur en-tête et données sont passés par procédures stockés ! Donc elles sont toutes de type Boundfield.
Sauf qu'il y en a une qui s'appelle "lien" et je veux quelle devienne de type hyperlink !

Donc dans mon code si je fais :
                    ButtonField colonne = new ButtonField();
                    colonne.Text = "lien";
                    ...
                    grdevt.Columns.add(colonne)
Cela me crée une nouvelle colonne alors que je veux modifié le type d'une colonne déjà existante !
Tu peux m'aider?
lundi 12 janvier 2009 à 14:42:04 | Re : recupérer des données dans un gridview

ggtry

Mais rien ne t'oblige à créer une colonne boundfield pour ton lien... Tu veux d'abord créer un boundfield, puis changer ce boundfield en buttonfield ou en hyperlinkfield : mais il suffit de créer directement ta colonne comme buttonfield ou hyperlinkfield. "Boundfield" signifie simplement que tu crées un champ de texte, et voilà tout. Or, à la place, tu peux très bien créer un buttonfield, sans créer de boundfield pour la colonne en question.
Tu mets ton test if après ta déclaration de colonne boundfield : tu devrais plutôt faire un test qui va vérifier le type de la colonne à créer. Si c'est une colonne qui doit être rendue par un boundfield, tu déclares et tu ajoutes un boundfield, sinon tu ajoutes un buttonfield... ou l'inverse.

if ( ... ton test ...)
{
BoundField bnd_Colonne = new BoundField()
bnd.colonne.headertext= etc.
...
grdEvt.Columns.Add(bnd_Colonne);
}
else
{
ButtonField bnd_Colonne = new ButtonField()
... etc ...
grdEvt.Columns.Add(bnd_Colonne);
}


GGtry
lundi 12 janvier 2009 à 15:39:32 | Re : recupérer des données dans un gridview

lylyboop

Merci beaucoup pour ton aide !
Je n'arrivait pas en fait à créer la colonne avec tes explications et récupérer les données de la procédure stockée mais c'est bon maintenant tout marche.
Encore merci à toi

@+
Lylyboop


Cette discussion est classée dans : données, lien, gridview, recupérer


Répondre à ce message

Sujets en rapport avec ce message

Affichage conditionnel de données et d'un lien. [ par JROB ] Bonjour,Je développe un site à l'intérieur d'un intranet. J'utilise DMX 2004.Mes connaissance en VBSCRIPT et ASP étant sommaires je butte sur une diff Asp.net+C# [ par meth6278 ] salut a tous........................ma page contient un listBox ,un Gridview et un bouton pour souvgarder les données saisie dans le gridview.lorsque lier 2 dropdonwlist dans un edittemplate d'un gridview [ par laraignee12 ] Je voudrai lier 2 dropdownlist par des bases de données qui dépendent l'une de l'autre dans l'editemplate d'un gridview mais quand je le fais il y a m telecharger un lien depuis un gridview [ par akira3 ] bonjour, Je récupère un lien téléchargé précédement dans un fileupload puis je stocke cette valeur dans mon gridview.Le problème vient que je ne Update GridView avec un UpdatePanel et un Timer [ par fabienfs ] Bonjour,Tout d'abord, joyeux noël ! Je n'arrive pas à faire un update des données se trouvant dans ma gridview avec un UpdatePanel et un Timer en Ajax ajouter une ligne dans un gridview [ par kipich2006 ] salut tout le monde j'ai un gridview et je voudrai le remplir à partir de données qui ne provienne pas d'une base de données,je voudrais savoir commen Ajouter des lignes à un gridview [ par yanis7518 ] Salut a tousvoila j'ai un gridview et je voudrai le remplir à partir de données (qui ne provienne pas d'une base de données) que je récupère d'une aut probleme avec un lien a la base de données access [ par arnof ] j'ai un champs dans ma bdd qui est une adresse e-mail est je voudrait qu'a l'affichage que l'adresse s affiche et que si l'utilisateur click dessus qu asp.net lien requete et données dynamiques [ par missette ] coucou tt le monde, je voudrais savoir comment faire pour établir un lien entre les données dynamiques se trouvant dans un datagride et des requete. Lien dans GridView [ par garcimor59 ] Bonjour,Pourriez-vous m'aider svp pour le probleme suivant : J'ai un GridView dans lequel je dois inserer des liens Le premier poitant vers une page q


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,061 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales