Bonjour,
Je travaille sur une application ASP .NET en VB et framework 2.0.
Pour afficher des données, je fais du databinding sur un gridview principale avec une Datatable nommée dtGlobale.
Ensuite, j'utilise l'événement RowDataBound de la gridview pour "binder" des Datatables plus petites sur des gridviews incluses dans ma gridview principale.
Cela fonctionne, c'est à dire que les données attendues sont correctement affichées.
Pour générer un Export sous Excel en cliquant sur un bouton après l'affichage, j'utilise la bibliothèque NPOI. Je dispose d'une classe ExcelWorkbook dans laquelle il est possible de charger des gridviews (wb.Load(maGridView)).
J'ai donc pensé que je pourrais parcourir les Rows de ma GridView, et que à chaque fois que je trouverais une gridview incluse dans la gridview principale, je pourrais la charger dans l'export, de façon à automatiser ce traitement (et à pouvoir le réutiliser pour d'autres cas).
Or, si j'arrive à accéder aux données de la gridview principale, je constate que je n'arrive pas à accéder aux données des gridviews incluses (c'est à dire que la valeur de ma variable dtsource vaut Nothing, même quand j'essaye de récupérer la datasource d'une gridview contenant des données.)
Le code est le suivant. Ma gridview principale s'appelle gvMaGrille et mes gridviews incluses s'appellent gv1, gv2, gv3 etc.
Je précise que je passe bien dans le code :
If Not gv Is Nothing Then
dtsource = gv.DataSource
End If
mais que en sortie, dtsource vaut toujours Nothing.
Merci de vos suggestions.
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 Dim i As Integer, j As Integer Dim nomGv As String Dim dts As DataTable Dim dv As DataView Dim dtsource as DataSource For i = 0 To gvMaGrille.Rows.Count - 1 Dim nbControles As Integer = gvMaGrille.Rows(i).Controls.Count For j = 0 To nbControles - 1 nomGv = "gv" + j.ToString() Dim gv As GridView = CType(gvMaGrille.Rows(i).FindControl(nomGv), GridView) If Not gv Is Nothing Then dtsource = gv.DataSource End If Next Next
Partager