Bonjour à tous !!
Je vous présente mon soucis :
Une application web, en VB / ASPX. Je dispose d'un magnifique GridView, rempli à l'aide d'un SqlDataSource, le tout en aspx, je vous présente le code :
Jusque là, tout se passe bien, ma requête s’exécute correctement, mon GridView se rempli.
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 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" SkinID="dataGrid" onrowcommand="GridView1_RowCommand"> <Columns> <asp:TemplateField AccessibleHeaderText="id_session" HeaderText="id_session"> <EditItemTemplate> <asp:TextBox ID="txt_id_session" runat="server" Text='<%# Bind("id_session") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="lbl_id_session" runat="server" Text='<%# Bind("id_session") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>" SelectCommand="SELECT s.id_session, f.libelle_formation, s.date_debut_session, s.date_fin_session, COUNT(p.id_personne) AS Expr1 FROM Sessions AS s LEFT OUTER JOIN Participe AS p ON p.id_session = s.id_session AND p.actif = 1 RIGHT OUTER JOIN Formation AS f ON f.id_formation = s.id_formation WHERE (s.date_fin_session > GETDATE()) OR (s.date_fin_session < GETDATE()) OR (S.date_fin_session = GETDATE()) GROUP BY s.id_session, f.libelle_formation, s.date_debut_session, s.date_fin_session" > </asp:SqlDataSource>
Et viens le côté amusant, j'ai besoin de récupérer dans mon codeBehind en VB, la valeur contenu dans ma première colonne, à savoir "id_session", cette colonne est masquée dans le code de cette manière :
Je n'utilise plus la seconde méthode (en commentaire) car celle-ci supprime la pagination de mes GridView je ne sais pour quelle raison.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Protected Sub OnRowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GridView1.RowCreated GridView1.Columns(0).Visible = False 'e.Row.Cells(0).Visible = False 'Permet de ne pas afficher le champ Id mais de le prendre en compte tout de même (Requête) End Sub
Et ensuite seulement, dans un autre Sub, je dois récupérer la valeur de ma colonne, j'ai essayé de plusieurs manières, jamais rien n'y fait >< Si quelqu'un peut me venir en aide ...
Voici mes tests actuellement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim id_session = GridView1.SelectedRow.Cells(0).Controls(0).ToString ' Retourne System.Web.UI.Literalcontrol Dim id_session = GridView1.SelectedRow.RowIndex 'Retourne le numéro de la ligne
Voila comment se présente ma page au final, une fois que l'utilisateur aura cliqué sur "Sélectionner", trois nouveau lien apparaîtrons chacun menant vers une page dont l'url se terminera par mon "id_session".
Partager