1 pièce(s) jointe(s)
Récupération colonne masquée GridView
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:
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:
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:
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 |
Pièce jointe 144958
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".