Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Datagrid. Export Excel, Paging

2 réponses
Avatar
fabrice
Bonjour à tous.

Framework 1.1
Vb.net

J ai une page ou je lie un datagrid via un dataset. Ce dernier n est pas mis
en cache ni en session.
Sur le datagrid est activé la pagination et le tri.
J ai un créé un bouton Export du datagrid au format Excel sur la page.

>> Le problème est que l'export ne ramène que la page courante. J'ai
>> appliqué pas mal de solution dont mettre "allowpaging=false" mais rien n
>> y fait...

Voici le code :

J'ai créé une classe qui reçoit en paramètre le datagrid.
!! Je me demande si le problème n'est pas ici. C'est à dire que l'objet
transmis à la procédure "doExcelExport" n'est finalement pas que la datagrid
"courant" à savoir la page courante uniquement a cause.
Dans ce cas y aurait un moyen de transmettre tout le datagrid.

Dans la page : le bouton actionne cette procédure :

Sub doExcelExport(ByVal Sender As System.Object, e as ImageClickEventArgs)

[NameSpace.LaClass].doExcelExport (myDataGrid)

End Sub


le contenu de doExcelExport

Dim DimDataGrid As System.Web.UI.WebControls.DataGrid = expDataGrid

'Mise en Forme du Datagrid pour Export.
With DimDataGrid
.Columns(1).Visible = False
.Columns(8).Visible = False
.PagerStyle.Visible =False
.GridLines=GridLines.Both
.HeaderStyle.Font.Size = FontUnit.Point(12)
.HeaderStyle.BackColor = System.Drawing.Color.FromName("#FFFFFF")
.borderwidth=Unit.Parse("1")
.Borderstyle = BorderStyle.None
.AllowPaging= False
.EnableViewState = False
.AllowSorting = False
End With

Dim strFileName As String = "fichier.xls"

HttpContext.Current.Response.Clear()
HttpContext.Current.Response.Buffer = True
HttpContext.Current.Response.ContentType =
"application/vnd.ms-excel"
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment; filename=""" & strFileName & """")
HttpContext.Current.Response.Charset = ""
Dim monStringWriter As System.IO.StringWriter = New
System.IO.StringWriter
Dim monHtmlTextWriter As System.Web.UI.HtmlTextWriter = New
System.Web.UI.HtmlTextWriter(monStringWriter)
DimDataGrid.RenderControl(monHtmlTextWriter)
HttpContext.Current.Response.Write(monStringWriter.ToString())
HttpContext.Current.Response.End()

...

Tout cela fonctionne bien sauf que je n'ai que la prmière page du Datagrid
paginé à la base.

Si vous avez une idée, merci par avance.

2 réponses

Avatar
Daniel
Bonjour,

Je pense que le probléme provient du fait que tu envoi la grille et pas le
dataset, de ce fait le systéme te renvoi que la premiere page.

Si tu veux avoir l'ensemble de tes données il faut remplacer la grille par
le dataset.

cordialement,

"fabrice" a écrit dans le message de news:

Bonjour à tous.

Framework 1.1
Vb.net

J ai une page ou je lie un datagrid via un dataset. Ce dernier n est pas
mis en cache ni en session.
Sur le datagrid est activé la pagination et le tri.
J ai un créé un bouton Export du datagrid au format Excel sur la page.

Le problème est que l'export ne ramène que la page courante. J'ai
appliqué pas mal de solution dont mettre "allowpagingúlse" mais rien n
y fait...





Voici le code :

J'ai créé une classe qui reçoit en paramètre le datagrid.
!! Je me demande si le problème n'est pas ici. C'est à dire que l'objet
transmis à la procédure "doExcelExport" n'est finalement pas que la
datagrid "courant" à savoir la page courante uniquement a cause.
Dans ce cas y aurait un moyen de transmettre tout le datagrid.

Dans la page : le bouton actionne cette procédure :

Sub doExcelExport(ByVal Sender As System.Object, e as ImageClickEventArgs)

[NameSpace.LaClass].doExcelExport (myDataGrid)

End Sub


le contenu de doExcelExport

Dim DimDataGrid As System.Web.UI.WebControls.DataGrid = expDataGrid

'Mise en Forme du Datagrid pour Export.
With DimDataGrid
.Columns(1).Visible = False
.Columns(8).Visible = False
.PagerStyle.Visible úlse
.GridLines=GridLines.Both
.HeaderStyle.Font.Size = FontUnit.Point(12)
.HeaderStyle.BackColor = System.Drawing.Color.FromName("#FFFFFF")
.borderwidth=Unit.Parse("1")
.Borderstyle = BorderStyle.None
.AllowPaging= False
.EnableViewState = False
.AllowSorting = False
End With

Dim strFileName As String = "fichier.xls"

HttpContext.Current.Response.Clear()
HttpContext.Current.Response.Buffer = True
HttpContext.Current.Response.ContentType =
"application/vnd.ms-excel"
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment; filename=""" & strFileName & """")
HttpContext.Current.Response.Charset = ""
Dim monStringWriter As System.IO.StringWriter = New
System.IO.StringWriter
Dim monHtmlTextWriter As System.Web.UI.HtmlTextWriter = New
System.Web.UI.HtmlTextWriter(monStringWriter)
DimDataGrid.RenderControl(monHtmlTextWriter)
HttpContext.Current.Response.Write(monStringWriter.ToString())
HttpContext.Current.Response.End()

...

Tout cela fonctionne bien sauf que je n'ai que la prmière page du Datagrid
paginé à la base.

Si vous avez une idée, merci par avance.



Avatar
fabrice
hello daniel

finalement, ceci semble fonctionner

Sub doExcelExport(ByVal Sender As System.Object, e as ImageClickEventArgs)
myDataGrid.AllowPaging= False
myBindData()
myXLSHelper.XLSHelper.doExcelExport (myDataGrid)
myDataGrid.AllowPaging=True


Je désactive la pagination du Datagrid avant de passer mon objet datagrid,
puis je le "remplis" de nouveau.
Ca fonctionne bien.

merci de ton aide
fab


"Daniel" a écrit dans le message de
news:
Bonjour,

Je pense que le probléme provient du fait que tu envoi la grille et pas le
dataset, de ce fait le systéme te renvoi que la premiere page.

Si tu veux avoir l'ensemble de tes données il faut remplacer la grille par
le dataset.

cordialement,

"fabrice" a écrit dans le message de news:

Bonjour à tous.

Framework 1.1
Vb.net

J ai une page ou je lie un datagrid via un dataset. Ce dernier n est pas
mis en cache ni en session.
Sur le datagrid est activé la pagination et le tri.
J ai un créé un bouton Export du datagrid au format Excel sur la page.

Le problème est que l'export ne ramène que la page courante. J'ai
appliqué pas mal de solution dont mettre "allowpagingúlse" mais rien
n y fait...





Voici le code :

J'ai créé une classe qui reçoit en paramètre le datagrid.
!! Je me demande si le problème n'est pas ici. C'est à dire que l'objet
transmis à la procédure "doExcelExport" n'est finalement pas que la
datagrid "courant" à savoir la page courante uniquement a cause.
Dans ce cas y aurait un moyen de transmettre tout le datagrid.

Dans la page : le bouton actionne cette procédure :

Sub doExcelExport(ByVal Sender As System.Object, e as
ImageClickEventArgs)

[NameSpace.LaClass].doExcelExport (myDataGrid)

End Sub


le contenu de doExcelExport

Dim DimDataGrid As System.Web.UI.WebControls.DataGrid = expDataGrid

'Mise en Forme du Datagrid pour Export.
With DimDataGrid
.Columns(1).Visible = False
.Columns(8).Visible = False
.PagerStyle.Visible úlse
.GridLines=GridLines.Both
.HeaderStyle.Font.Size = FontUnit.Point(12)
.HeaderStyle.BackColor = System.Drawing.Color.FromName("#FFFFFF")
.borderwidth=Unit.Parse("1")
.Borderstyle = BorderStyle.None
.AllowPaging= False
.EnableViewState = False
.AllowSorting = False
End With

Dim strFileName As String = "fichier.xls"

HttpContext.Current.Response.Clear()
HttpContext.Current.Response.Buffer = True
HttpContext.Current.Response.ContentType =
"application/vnd.ms-excel"
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment; filename=""" & strFileName & """")
HttpContext.Current.Response.Charset = ""
Dim monStringWriter As System.IO.StringWriter = New
System.IO.StringWriter
Dim monHtmlTextWriter As System.Web.UI.HtmlTextWriter = New
System.Web.UI.HtmlTextWriter(monStringWriter)
DimDataGrid.RenderControl(monHtmlTextWriter)
HttpContext.Current.Response.Write(monStringWriter.ToString())
HttpContext.Current.Response.End()

...

Tout cela fonctionne bien sauf que je n'ai que la prmière page du
Datagrid paginé à la base.

Si vous avez une idée, merci par avance.