Onrowcommand et gridview

ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010 - 28 mai 2009 à 14:55
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 30 mai 2009 à 13:54
Bonjour, je veux ouvrir la page correspondante à la cellule cliquée de
la colonne "Username" et j' ai fait comme suit:
Dans ma page .ascx il ya:

           
       
    </Columns>

Et dans ma page ascx.cs il ya:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int NumLigne = Convert.ToInt32(e.CommandArgument);
        string sId = GridView1.Rows[2].Cells[2].Text;
        Response.Redirect(("Default.aspx?ID=" + sId));
    }

J'obtiens pas le resultat que je veux. Pouvez-vous m'aider?
Merci.

4 réponses

ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
28 mai 2009 à 17:02
Ce que je veux c'est appeler la page correspondante en cliquant sur les cellules de la colonne "UserName".
J'ai modifié comme suit dans le .ascx:

    <Columns>
           
           
               
                    ' ID="Label1" runat="server" Text='<%# Bind("UserName") %>'>
               
           
    </Columns>

Et dans le ascx.cs :

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int index;
        string cle;
        if (e.CommandArgument == "UserID")
        {
            // "index" représente l'indice de la ligne de la gridview
            index = Convert.ToInt32(e.CommandArgument);
            // instancier une ligne de la gridview
            GridViewRow row_grid = GridView1.Rows[index];
            // récupérer la valeur de la premiere cellule de la ligne
            cle = row_grid.Cells[1].Text;
            Response.Redirect("Default.aspx?ID=" + cle);  
         }
    }
 
Help pleaz, je suis bloqué. Merci.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
28 mai 2009 à 20:31
Salut,

Sur le linkbutton mets la postbakurl a "Default.aspx?ID=" + cle

Quelle erreur tu as?
Passe avec le débugger.
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
29 mai 2009 à 11:00
Le probléme de dirction est réglé mais j'ai une exception de depassement. Avec le code qui suit, je veut parcourir la première colonne de mon gridview et quand je clique sur une cellule de cette colonne, je sois dirigé vers 1 page specifique que j'ai indiqué avec la redirection.

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int index=GridView1.Rows[1].Cells.Count;
        string cle;
        for (int i = 0;i < index; i++)
        if (e.CommandName == "Editer")
        {
            {
                index = Convert.ToInt32(e.CommandArgument);
               GridViewRow row_grid = GridView1.Rows[index];//L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre : index
                cle = row_grid.Cells[i].Text;
                Response.Redirect(DotNetNuke.Common.Globals.NavigateURL(43, "Edit", "mid=" + 355, "UserID=" + cle));
            }
        }
    }

Mon code est-il juste? Merci.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
30 mai 2009 à 13:54
C'est un peu normal
tu modifies index dans la boucle
utilise des variables bien nommées.


Relit ton code a voit haut et dessine sur un papier pour essayer de comprenndre.
Exemple

index = Convert.ToInt32(e.CommandArgument); dans la boucle aura toujours la meme valeur
donc a sortir de la boucle
idem pour
GridViewRow row_grid = GridView1.Rows[index];

donc il y a que cette partie qui est variable
cle = row_grid.Cells[i].Text;
Response.Redirect(DotNetNuke.Common.Globals.NavigateURL(43, "Edit", "mid=" + 355, "UserID=" + cle));

Sachant que le response.redirect casse la boucle

donc tu n'as qu'un tour de boucle.

Evite de mettre des valeur en dur dans un code (43,355)
les constantes et les enums sont la pour remplacer ce type de valeur
0
Rejoignez-nous