我正在尝试将Gridview导出为excel。我将gridview绑定到一个集合,可以看到它有6个数据行但是当我调用RenderControl时它会返回一个空字符串。以下是我正在使用的代码
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();
当我检查outputHtml时,它是一个空字符串。我在这段代码中做错了什么。
需要注意的一点是gridview位于一个带有runat ='server'标签的表单中,并且我没有覆盖VerifyRenderingInServerForm方法。
答案 0 :(得分:1)
我最好的选择是你已将GridView的可见性设置为false。这将阻止控件渲染,因为它现在是不可见的。结果是一个空字符串。
如果您不想显示GridView,只需在执行渲染代码之前将Visibility设置为true,然后再将其设置为:
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;
现在可能会遇到RenderControl方法的问题。如果是这样,请确保您已在Page指令中设置EnableEventValidation="false"
并覆盖VerifyRenderingInServerForm
方法:
public override void VerifyRenderingInServerForm(Control control)
{
return;
}