Bonjour mesdames et monsieur,
A plusieurs reprises, j'ai toujours utilisé cette méthode de programmation qui a de tout temps marché.
Dans mon dernier projet, je rencontre des difficultés à récupérer la valeur de la clef primaire "Id".
En asp
Code asp : 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 <asp:GridView ID="GridView0" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" Width="100%" DataSourceID="SqlDataSource0" CssClass="GridviewLigne" ShowHeader="false" PageSize="18" DataKeyNames="Id"> <Columns> <asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-CssClass="GridExtreme"> <ItemTemplate> <asp:CheckBox ID="chk_supprime" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Valeur" SortExpression="Valeur" ReadOnly="True" ItemStyle-CssClass="Nom" /> <asp:BoundField DataField="Profil" SortExpression="Profil" ReadOnly="True" ItemStyle-CssClass="Profil" /> <asp:BoundField DataField="Email" SortExpression="Email" ReadOnly="True" ItemStyle-CssClass="Email" /> <asp:BoundField DataField="Tel" SortExpression="Tel" ReadOnly="True" ItemStyle-HorizontalAlign="Center" ItemStyle-CssClass="Tel" /> <asp:BoundField DataField="NomUtilisateur" SortExpression="NomUtilisateur" ReadOnly="True" ItemStyle-CssClass="Nu" /> <asp:CheckBoxField DataField="Actif" SortExpression="Actif" ReadOnly="True" ItemStyle-HorizontalAlign="Center" ItemStyle-CssClass="Actif" /> <asp:ButtonField ButtonType="Image" CommandName="Modifier" ImageUrl="~/Images/a_bt_grid_modifier.png" ItemStyle-CssClass="GridviewButton" ItemStyle-HorizontalAlign="Center" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource0" runat="server" ConnectionString="<%$ ConnectionStrings:HI_CNX %>" SelectCommand="SELECT R1.*,R2.Valeur as Profil FROM a_utilisateur_parent as R1 inner join a_profil_parent as R2 on R1.ProfilId=R2.Id"></asp:SqlDataSource>
en code behind vb.net
Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Protected Sub GridView0_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView0.RowCommand If e.CommandArgument.RowType <> DataControlRowType.DataRow Then Exit Sub Dim Idx As Integer = Convert.ToInt32(e.CommandArgument) Dim CP As String = GridView0.DataKeys(Idx)("Id") Select Case e.CommandName Case "Modifier" Response.Redirect(UrlApplication() & "Utilisateur/maj.aspx?Id=" & CP) Case Else Actualiser() End Select End Sub
En cliquant sur le cellule "Modifier" du GridView, j'obtiens l'erreur suivante:
à la ligneL'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
C'est la première fois que le GridView me joue ce tour et je suis désemparé. A quoi cela est-il dû?Dim CP As String = GridView0.DataKeys(Idx)("Id")
Partager