Sélectionner une ligne d'un gridview sans commandField

Signaler
Messages postés
5
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
23 janvier 2008
-
Messages postés
5
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
23 janvier 2008
-
Bonjour

J'aimerais savoir si il est possible d'avoir les informations d'une ligne d'un gridview sans passer par les boutons du commandField.

Actuellement mon gridview fonctionne très bien avec la colonne CommandField pour sélectionner la ligne mais je désire également obtenir les informations d'une ligne en cliquant dessus et non sur les bouton du CommandField.

Cela est il possible ?

Je n'ai pas trouvé grand chose sur les forums ( peut être je cherche mal )

Merci d'avance pour vos réponses

Bonne journée

 kikou - teatsx <img src="/imgs2/smile_sleepy

4 réponses

Messages postés
90
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008

Tu mets un element qui a un commandargument égal à "select" essaie un linkbutton par exemple.

-- Grégoire
Messages postés
79
Date d'inscription
lundi 28 octobre 2002
Statut
Membre
Dernière intervention
21 octobre 2008

Personnellement, je cache le CommandField :

<asp:CommandField
ShowSelectButton="True">
<HeaderStyle
CssClass="ColonneSelect"
/>
<ItemStyle
CssClass="ColonneSelect"
/>
</asp:CommandField>

Dans ma feuille de style :
.ColonneSelect

{

display:
none;
}

après je m'amuse avec le prerender pour faire ma présentation :

    protected void gvListeUser_PreRender(object sender, EventArgs e)
    {        //    gestion de l'affichage
        //Int32 i;
        gvListeUser.DataBind();
        if (gvListeUser.Rows.Count > 0)
        {
            for (Int32 i = 0; i < gvListeUser.Rows.Count; i++)
            {
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[1].Text.Trim(), i, 5, 1);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[2].Text.Trim(), i, 15, 2);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[3].Text.Trim(), i, 15, 3);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[4].Text.Trim(), i, 10, 4);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[5].Text.Trim(), i, 20, 5);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[6].Text.Trim(), i, 10, 6);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[7].Text.Trim(), i, 20, 7);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[8].Text.Trim(), i, 5, 8);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[9].Text.Trim(), i, 5, 9);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[10].Text.Trim(), i, 5, 10);
                MiseEnLigneLienTableau( gvListeUser.Rows[i].Cells[11].Text.Trim(), i, 5, 11);
            }
        }

    }

    protected void MiseEnLigneLienTableau(string TexteDepart, Int32 Index, Int32 Longueur, Int32 CelluleLigne)
    {
        //    ' mise en page d'une cellule Lien du gridview
        //    ' TexteDepart : texte de la base de donnée
        //    ' Index : ligne du tableau (sert pour faire le lien qui déclenche un SelectedIndexChanged sur GridView)
        //    ' Longueur : Longueur maximun avant découpage
        //    ' CelluleLigne : La cellule de la ligne

        String TexteModifie = "";

        TexteDepart = TexteDepart.Replace("&#233;", "é");
        TexteDepart = TexteDepart.Replace("&#201;", "É");
        TexteDepart = TexteDepart.Replace("&#200;", "È");
        TexteDepart = TexteDepart.Replace("&#232;", "è");
        TexteDepart = TexteDepart.Replace("&#234;", "ê");
        TexteDepart = TexteDepart.Replace("&#224;", "à");
        TexteDepart = TexteDepart.Replace("&#226;", "â");
        TexteDepart = TexteDepart.Replace("&#238;", "î");
        TexteDepart = TexteDepart.Replace("&#244;", "ô");
        TexteDepart = TexteDepart.Replace("&#212;", "Ô");
        TexteDepart = TexteDepart.Replace("&#251;", "û");
        TexteDepart = TexteDepart.Replace("&#235;", "ë");
        TexteDepart = TexteDepart.Replace("&#231;", "ç");
        TexteDepart = TexteDepart.Replace("&amp;", "&");
        TexteDepart = TexteDepart.Replace("&#176;", "°");
        TexteDepart = TexteDepart.Replace("`", "'");

        if (TexteDepart.Length > Longueur + 3)
        {
            TexteModifie = TexteDepart.Substring(0, Longueur) + "...";
        }
        else
        {
            TexteModifie = TexteDepart;
        }

        gvListeUser.Rows[Index].Cells[CelluleLigne].Text = TexteModifie;
        gvListeUser.Rows[Index].Cells[CelluleLigne].Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(gvListeUser, "Select$" + Index.ToString()));
        gvListeUser.Rows[Index].Cells[CelluleLigne].Attributes.Add("onMouseOver", "this.style.cursor='hand';");
        if (TexteDepart != "" & TexteModifie != TexteDepart)
        {
            gvListeUser.Rows[Index].Cells[CelluleLigne].ToolTip = TexteDepart;
        }

    }
Messages postés
5
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
23 janvier 2008

Bonjour

Merci pour les réponses

Grégoire, ta solution revient à ajouter un bouton en plus. Ce que je veux, c'est de cliquer directement sur les données affichées (cliquer sur la row) pour obtenir les informations de la ligne sans ajouter un bouton donc sans CommandField, ni de commandName(linkbutton). Si je rajoute un linkbutton, autant que je garde la colonne CommandField


La soluce de zuff a l'air intéréssante (un peu complexe pour moi qui suis débutant ), je vais essayer pour voir


Je vous tiens au courant.

Merci encore

Passer une bonne journée

 kikou - teatsx <img src="/imgs2/smile_sleepy
Messages postés
5
Date d'inscription
jeudi 17 août 2006
Statut
Membre
Dernière intervention
23 janvier 2008

La soluce zuff a presque marché, zut

Lorsque je clique sur le texte des données de mon gridview gdvSession j'ai bien l'évenement gdvSession_SelectedIndexChanged qui est executé. Cette évenement m'affiche bien mon Tab Extender d'Ajax qui contient plusieurs gridView.

Jusque là tout va bien mais il y a un hic, mon gridView gdvSession sur lequel j'ai cliqué n'est plus là (n'est plus affiché). J'ai seulement mon Tab Extender d'Ajax qui est affiché.

 ca vient peut être du pre_render qui ne recharge pas mon gridView gdvSession.
Je creuse la question .

Si vous avez une idée, vous êtes la bienvenue

Merci

Bonne journée

 kikou - teatsx <img src="/imgs2/smile_sleepy