Sélectionner une ligne d'un gridview sans commandField

teatsx 5 Messages postés jeudi 17 août 2006Date d'inscription 23 janvier 2008 Dernière intervention - 22 janv. 2008 à 18:23 - Dernière réponse : teatsx 5 Messages postés jeudi 17 août 2006Date d'inscription 23 janvier 2008 Dernière intervention
- 23 janv. 2008 à 17:27
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
Afficher la suite 

4 réponses

Répondre au sujet
gldfdp 91 Messages postés lundi 30 juin 2003Date d'inscription 21 février 2008 Dernière intervention - 22 janv. 2008 à 21:04
0
Utile
Tu mets un element qui a un commandargument égal à "select" essaie un linkbutton par exemple.

-- Grégoire
Commenter la réponse de gldfdp
zuff 79 Messages postés lundi 28 octobre 2002Date d'inscription 21 octobre 2008 Dernière intervention - 23 janv. 2008 à 14:35
0
Utile
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;
        }

    }
Commenter la réponse de zuff
teatsx 5 Messages postés jeudi 17 août 2006Date d'inscription 23 janvier 2008 Dernière intervention - 23 janv. 2008 à 16:10
0
Utile
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
Commenter la réponse de teatsx
teatsx 5 Messages postés jeudi 17 août 2006Date d'inscription 23 janvier 2008 Dernière intervention - 23 janv. 2008 à 17:27
0
Utile
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
Commenter la réponse de teatsx

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.