2009-09-08 6 views
0

J'essaie d'exporter un DataGrid vers un fichier Excel. Il convertit l'asp: BoundColumn correctement, mais les colonnes de template avec un linkbutton ou un imagebutton ne peuvent pas être converties. Ces cellules sont converties en une cellule vide.Problème lors de l'exportation d'une grille pour exceler

Voici le code qui exporte les commandes pour exceller.,

Public Shared Sub Export(ByVal Mime As String, ByVal Filename As String, ByVal Response As HttpResponse, ByVal Control As Control) 

    Dim stringWrite As New System.IO.StringWriter() 
    Dim htmlWrite As New System.Web.UI.HtmlTextWriter(stringWrite) 
    Response.Clear() 
    Response.Buffer = True 
    Response.Charset = String.Empty 
    Response.ContentType = Mime 
    Response.AddHeader("Content-Disposition", "filename=" & Filename) 
    Control.RenderControl(htmlWrite) 
    Response.Write("<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><html xmlns=""http://www.w3.org/1999/xhtml""><head id=""Head1"" runat=""server""><meta http-equiv=""content-type"" content=""text-html; charset=utf-8""></head><body>" & stringWrite.ToString & "</body></html>") 
    Response.End() 
End Sub 

Lorsque le problème pourrait être? Des idées? Merci d'avance.

+0

vous avez besoin ImageButton dans Excel aussi? –

+0

en fait mon problème n'est pas la visiblité de l'imagebutton. c'est bien de ne pas le montrer mais je veux connaître la raison. mais pour un linkbutton oui j'en ai besoin, au moins son texte. –

Répondre

1

Fondamentalement, le problème est avec le rendu des contrôles non-littéraux en dehors d'un formulaire côté serveur.

Voici quelques articles qui se concentrent sur cette opération avec un GridView, mais qui devraient également fonctionner correctement avec un DataGrid. La principale chose à regarder est la fonction qu'ils appellent avant de rendre la grille qui traverse les contrôles de la grille et convertit n'importe quel LinkButtons, etc. en littéraux.

Article 1: A simpler, more "hard-coded" way, specifically for LinkButtons and Dropdownlists (regarder vers le bas pour la DisableControls fonction)

Article 2: A more robust and flexible method to deal with different types of controls

Questions connexes