2011-08-18 6 views
1

J'essaye d'exporter un Gridview pour exceler. Je lie le gridview à une collection et peut voir qu'il a 6 lignes de données mais quand j'appelle le RenderControl il renvoie une chaîne vide. Ci-dessous est le code que j'utiliseGridvew.RenderControl renvoie la chaîne vide

Gridview1.DataSource = data; 
Gridview1.DataBind(); 
System.IO.StringWriter sw = new System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw); 
Gridview1.RenderControl(htw); 
var outputHtml = sw.ToString(); 

lorsque je vérifie le outputHtml c'est une chaîne vide. Ce que je fais mal dans ce morceau de code. Une chose à noter est que gridview se trouve dans un formulaire avec la balise runat = 'server' et que je n'ai pas surchargé la méthode VerifyRenderingInServerForm.

+0

Où dans la page Cycle de vie vous exécutez ce code? – magnattic

+0

Je le fais en postback, cliquez sur l'événement d'un bouton – DotNetJourneyMen

Répondre

1

Mon meilleur pari est que vous ayez défini la visibilité de GridView sur false. Cela empêchera le rendu du contrôle, parce que ... c'est invisible maintenant. Le résultat est une chaîne vide.

Si vous ne voulez pas montrer GridView, juste définir la visibilité à true avant d'exécuter votre code de rendu et le ramener ensuite:

gv_sample.Visible = true; 
    System.IO.StringWriter sw = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw); 
    gv_sample.RenderControl(htw); 
    var outputHtml = sw.ToString(); 
    gv_sample.Visible = false; 

Vous pouvez éventuellement vous des ennuis avec la méthode RenderControl à présent. Si oui, assurez-vous que vous avez défini dans la directive EnableEventValidation="false" Page et remplacer la méthode VerifyRenderingInServerForm:

public override void VerifyRenderingInServerForm(Control control) 
{ 
    return; 
} 
+0

Si cela ne fonctionne toujours pas pour vous, j'ai besoin de plus de code de votre page et de la version .NET que vous utilisez. – magnattic

+0

c'était tout, merci – DotNetJourneyMen

+0

Content de pouvoir aider. Veuillez marquer cette réponse comme "acceptée" alors. :) – magnattic

Questions connexes