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 :

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>
Jusque là, tout se passe bien, ma requête s’exécute correctement, mon GridView se rempli.

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 :

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
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.

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
Nom : Sans titre.png
Affichages : 224
Taille : 26,9 Ko

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".