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 :

activer le champ :selectionner dans un gridview


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut activer le champ :selectionner dans un gridview
    bonjour,dans un gridview j'ai un champ sélectionner je veux quand je clic sur sélectionner me diriger vers une autre page pour mettre a jour les données de salarié qui se trouve dans la ligne sélectionner .mon code dans la page qui contient le gridview est le suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
        <asp:Label ID="Label1" runat="server" Text="MISE A JOUR DES SALAIRES" 
            style="font-weight: 700; font-size: medium"></asp:Label>
        <br />
        <br />
        <asp:Label ID="Label2" runat="server" Text="Adherent" style="font-size: small"></asp:Label>
        &nbsp; :<asp:TextBox ID="TextBox1" runat="server" Width="40px"></asp:TextBox>
    &nbsp;
    &nbsp;<asp:TextBox ID="TextBox2" runat="server" Width="52px"></asp:TextBox>
        &nbsp;
     
        <br />
        <br />
        &nbsp;<asp:Label ID="Label4" runat="server" Text="Periode" style="font-size: small"></asp:Label>
        &nbsp;&nbsp;&nbsp; :<asp:TextBox ID="TextBox3" runat="server" Width="110px"></asp:TextBox>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Button ID="Button1" runat="server" Text="valider" />
        <br />
        <br />
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
            AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" 
            BorderStyle="None" BorderWidth="1px" CellPadding="3" 
            DataSourceID="SqlDataSource1" 
            EmptyDataText="Il n'y a aucun enregistrement de données à afficher." 
            Height="331px" onselectedindexchanged="GridView1_SelectedIndexChanged1" 
            Width="479px">
            <RowStyle ForeColor="#000066" />
            <Columns>
                <asp:TemplateField ShowHeader="False">
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                            CommandName="Select" Text="Sélectionner"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="pre_par" HeaderText="prenom" 
                    SortExpression="pre_par" />
                <asp:BoundField DataField="nom_par" HeaderText="nom" SortExpression="nom_par" />
            </Columns>
            <FooterStyle BackColor="White" ForeColor="#000066" />
            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>" 
            ProviderName="<%$ ConnectionStrings:ConnectionString2.ProviderName %>" 
     
     
     
     
            SelectCommand="SELECT assure.nom_par, assure.pre_par FROM assure INNER JOIN salaire ON assure.cod_sec = salaire.cod_sec AND assure.num_adh = salaire.num_adh AND assure.num_parp = salaire.num_par WHERE (assure.cod_sec = ?) AND (assure.num_adh = ?) AND (salaire.cod_prd = ?)">
            <SelectParameters>
                <asp:ControlParameter ControlID="TextBox1" Name="?" PropertyName="Text" />
                <asp:ControlParameter ControlID="TextBox2" Name="?" PropertyName="Text" />
                <asp:ControlParameter ControlID="TextBox3" Name="?" PropertyName="Text" />
            </SelectParameters>
        </asp:SqlDataSource>
        </asp:Content>

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    En général, dans ton cas, il faut d'abord que tu affiche (tu sélectionne) aussi l'identificateur avec quoi faire la mise à jour, si on donne comme identif. par exemple SalarieId, dans ta GridView, tu peux mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:TemplateField ShowHeader="False">
                            <ItemTemplate>
                                <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select"
                                    Text="Sélectionner" CommandArgument='<%# Eval("SalarieId") %>'></asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>
    Bien sûr il ne faut pas oublier d'ajouter l'évenement OnRowCommand :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand"  .....
    Ensuite dans ton code behind et surtout dans le dernier évent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {
                int IdSalarie = int.Parse(e.CommandArgument.ToString());
                // Redirection vers la page où tu vas mettre à jour la ligne sélectionnée
     
                // Traitement ......
     
                // On fait au lieu de te rediriger vers une autre page, tu peux appeler une classe 
                // où t'a ta méthode de mise à jour, comme par exemple :
     
                TaClasse obj = new TaClasse();
                obj.MethodeDeMiseAJour(IdSalarie);
               // Dans ce cas tu peux mettre à jour tes données dans la même page
            }
        }

    ça c'est en général, à toi de voir comment l'adapter avec ton code.
    Bonne courage.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    j'ai effectué les changements que vous avez proposés mais une erreur qui se génère quand j"affiche la page dans la navigateur:

    'System.EventArgs' ne contient pas une définition pour 'CommandName' et aucune méthode d'extension 'CommandName' acceptant un premier argument de type 'System.EventArgs' n'a été trouvée

    je veux savoir aussi ou je passe le lien vers la page sur laquelle je vais effectuer
    la mise a jour de salaire de chaque salarié.votre aide svp.

  4. #4
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Tu est sur de travailler avec l'évent OnRowCommand ?!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    exemple :

    http://msdn.microsoft.com/fr-fr/libr...owcommand.aspx

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    oui ta raison j'ai changé l'event et ça marche mai quand mm lorsque je clic sur sélectionner ya rien comme evenement.je souhaite quand je clic sur sélectionner accéder a une autre page dans laquelle je vai effectuer la mise a jour de salaire de l'employé choisi.merci pour votre aide

  6. #6
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    En fait, tu peux te rediriger vers une autre page via :
    Response.Redirect("Ta2emePage.aspx")

    Dans ce cas si tu passe la valeur de ton Id, dans le QueryString par exemple, pour le récupérer aprés dans ta 2ème page, tu peux travailler
    avec et faire la mise à jour que tu souhaite, mais c'est pas performant cette méthode (voir Sql Injection)

    il y a des risques comme:
    si tu as dans ta 2ème page une méthode où on a une requette, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string sql = "update Table Set Champ1 = " + Valeur1 + " where IDSalarie = " + Request.QueryString["IdSalarie"]
    alors il suffit juste de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Redirect("Ta2emePage.aspx?IdSalarie=" + e.CommandArgument + " delete from uneTable")
    et tu auras une requette comme celle là (IdSalarie=10 dans ce cas):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update Table Set Champ1 = 'Valeur1' where IDSalarie = 10 delete from uneTable
    (risqué)

    je te propose, de travailler avec un projet de type class library où tu peux créer des classes et mettre dedans des propriètés et des méthodes (mise à jour, select, delete), tu vas appeler un objet d'une de ces classes dans ta page aspx, remplir les proprietes necessaires et appeler les methodes adéquates.

    de tt façon, je t'invite à voir les projets de type n-tiers, et aussi sql injection.

    bonne courage mon ami

Discussions similaires

  1. Ajout d'un champ input dans un GridView
    Par manu f dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/06/2010, 17h21
  2. Réponses: 2
    Dernier message: 09/06/2008, 08h55
  3. champs cachés dans une gridview
    Par kazoumoulox dans le forum ASP.NET
    Réponses: 16
    Dernier message: 17/07/2007, 15h58
  4. Réponses: 2
    Dernier message: 29/12/2006, 15h56
  5. Réponses: 3
    Dernier message: 26/09/2006, 11h06

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